首页/开发/代码质量与评审速查/手法:Replace Type Code with Class / Subclasses
重构手法62 条

手法:Replace Type Code with Class / Subclasses

用枚举、值类或子类取代魔法数字与字符串编码:取值集合受类型系统约束,比较与分支更安全;行为差异明显时再用子类分解编码行为。

演进常量 → 枚举/值类 → 子类(行为差异大时)
收益非法取值在编译期被拦下

Java 示例

Java 示例
// 之前:用 int 编码血型
static final int O = 0;
static final int A = 1;

// 之后
enum BloodGroup { O, A, B, AB }

易错点

  • 枚举持久化值直接依赖 ordinal:插入新枚举项即错位,显式指定存储值
  • 编码集合频繁扩展仍用子类:类数量随组合增长

数据来源与参考

  • 《重构》第 2 版 · 第 12 章(Replace Type Code with Class / Subclasses)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌