坏味道——发散式变化(Divergent Change)
发散式变化(Divergent Change)
类似于霰弹式修改(Shotgun Surgery)
,但实际上完全不同。发散式变化(Divergent Change)
是指一个类受多种变化的影响。霰弹式修改(Shotgun Surgery)
是指多种变化引发多个类相应的修改。
特征
你发现你想要修改一个函数,却必须要同时修改许多不相关的函数。例如,当你想要添加一个新的产品类型时,你需要同步修改对产品进行查找、显示、排序的函数。
问题原因
通常,这种发散式修改是由于编程结构不合理或者“复制-粘贴式编程”。
解决办法
- 运用
提炼类(Extract Class)
拆分类的行为。
收益
- 提高代码组织结构
- 减少重复代码
重构方法说明
提炼类(Extract Class)
问题
某个类做了不止一件事。
解决
建立一个新类,将相关的字段和函数从旧类搬移到新类。
引申阅读
欢迎继续阅读 代码的症与药 系列文章。