首页/开发/代码质量与评审速查/坏味道:重复的 switch(Repeated Switches)
重构手法62 条

坏味道:重复的 switch(Repeated Switches)

同一组 switch 在多处按类型分支时,新增类型要改所有分支;用 Replace Conditional with Polymorphism 把分支收敛到类型体系,或先用 Extract Function 集中。

信号同一枚举在多处 switch、新增分支容易漏改
手法Replace Conditional with Polymorphism、Extract Function
权衡分支少且稳定时,集中一处的 switch 未必更差

多态化方向

多态化方向
interface Shipping {
    Money cost(Order o);
}
class Air implements Shipping { ... }
class Ground implements Shipping { ... }

易错点

  • 为两个分支就引入类层次:抽象成本高于收益
  • 多态化后遗漏原有 default 语义:行为边角悄然改变

数据来源与参考

  • 《重构》第 2 版 · 第 3 章(Repeated Switches)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌