散弹式修改
概述
散弹式修改是变更阻碍类代码异味的一种,指一个小小的修改需要在许多不同的类中进行,与发散式变化相反,是另一种不利于维护的模式。
关键内容
- 特征识别:
- 一个修改需要编辑多个类
- 小功能需要触碰10个以上的文件
- 修改分散在代码库中,难以一次性找全
-
轻微改动影响范围广泛
-
负面影响:
- 容易遗漏修改,导致不一致
- 代码高度耦合
- 容易引入错误
- 增加了维护难度
-
开发效率低下
-
检测指标:
- 如果新增一个字段需要修改5个以上文件,则需要警惕
-
一个简单的功能修改涉及太多的类
-
重构策略:
- Move Method:将方法移动到更合适的位置
- Move Field:将字段移动到更合适的位置
-
Inline Class:内联不必要的类
-
预防措施:
- 将相关的功能组织在一起
- 降低类之间的耦合度
- 使用适当的设计模式
来源
- Martin Fowler — 《重构:改善既有代码的设计》
- 代码异味 — 重构指导书