首页/开发/代码质量与评审速查/手法:Split Loop(拆分循环)
重构手法62 条

手法:Split Loop(拆分循环)

一个循环同时做多件事时拆成多个单职责循环:可读性与可提炼性提升,现代编译器与运行时常常能抵消遍历开销;数据量大时先度量再决定。

信号循环体内做两件以上无关计算
做法按职责拆环,各自命名或提炼
注意超大集合先做性能评估

示例

示例
// 之前:一趟循环算两个无关值
for (p of people) { youngest = min(youngest, p.age); total += p.salary; }

// 之后
for (p of people) youngest = min(youngest, p.age);
for (p of people) total += p.salary;

易错点

  • 对热路径直接拆环不评估:遍历次数翻倍可能影响吞吐
  • 拆完仍是复杂聚合:继续用管道式写法重建关联

数据来源与参考

  • 《重构》第 2 版 · 第 8 章(Split Loop)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌