首页/开发/代码质量与评审速查/坏味道:基本类型偏执(Primitive Obsession)
重构手法62 条

坏味道:基本类型偏执(Primitive Obsession)

用 int / String 表示领域概念(金额、电话、币种):类型即约束,替换为 Replace Primitive with Object / Replace Type Code with Class 后,校验与格式逻辑有归属,调用处更难传错。

信号到处出现裸字符串与魔法数字、校验散落
手法Replace Primitive with Object、Replace Type Code with Class
收益类型系统帮你防错

示例

示例
// 之前
String phone = "...";

// 之后
PhoneNumber phone = PhoneNumber.parse("...");

易错点

  • 为每个字符串都造类型:过度建模,团队维护成本超过收益
  • 值对象可变:相等性与缓存假设被破坏,应尽量不可变

数据来源与参考

  • 《重构》第 2 版 · 第 3 章(Primitive Obsession)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌