首页/开发/代码质量与评审速查/坏味道:发散式变化(Divergent Change)
重构手法62 条

坏味道:发散式变化(Divergent Change)

一个类因不同原因被反复修改(数据库字段变了改它、税费规则变了也改它):按变化原因拆分,用 Split Phase、Extract Class 让每种变化只影响一个模块。

信号同一文件出现在差异很大的多类需求中
手法Extract Class、Split Phase
目标一个模块只对一类变化负责

拆分示例

拆分示例
// 之前:OrderService 承担校验 + 定价 + 持久化
// 之后:OrderValidator / Pricer / OrderRepository

易错点

  • 按技术层次硬拆(全都拆成 util):与领域无关的碎片更难复用
  • 拆完职责仍然交叉:拆分没有解决变化原因的耦合

数据来源与参考

  • 《重构》第 2 版 · 第 3 章(Divergent Change)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌