Type: concept
Confidence: 0.85
Created: 2026-04-25
Updated: 2026-04-25
Tags: 重构代码异味面向对象设计AI工程

switch语句

概述

switch语句是代码异味的一种,指长的switch/case或if/else链,通常表示违反了面向对象的开放/封闭原则,缺乏多态性的运用。

关键内容

  1. 特征识别
  2. 长switch/case或if/else链
  3. 多处出现相同的switch结构
  4. 按类型码进行分支判断
  5. 添加新case时需要修改多处代码
  6. 条件逻辑与数据紧密耦合

  7. 负面影响

  8. 违反开放/封闭原则(对扩展开放,对修改封闭)
  9. 修改会扩散到所有相关switch位置
  10. 难以扩展新类型
  11. 往往说明缺少多态性设计
  12. 当添加新类型时,所有条件语句都需要修改

  13. 重构策略

  14. Replace Conditional with Polymorphism用多态替换条件逻辑
  15. Replace Type Code with Subclasses:用子类替换类型码
  16. Replace Type Code with State/Strategy:用状态或策略模式替换类型码

  17. 重构示例: ``` // 重构前:使用switch语句 function calculatePay(employee) { switch (employee.type) { case 'hourly': return employee.hours * employee.rate; case 'salaried': return employee.salary / 12; case 'commissioned': return employee.sales * employee.commission; } }

// 重构后:使用多态 class HourlyEmployee { calculatePay() { return this.hours * this.rate; } }

class SalariedEmployee { calculatePay() { return this.salary / 12; } } ```

来源

相关