【代码坏味道】无用物Dispensables

💬 Comments(注释过多)

🧾 症状

  • 方法中充满了解释性注释。

🧠 问题原因

  • 作者意识到代码不易懂,靠注释来“掩盖”结构不清的问题。

🛠️ 应对方法

  • 用好名字代替注释:好名字胜过好注释
  • 提取变量 拆解复杂表达式。
  • 提取方法 将代码块抽出来,方法名直接体现注释内容。
  • 如果方法名仍不够清晰,使用 重命名方法
  • 需要说明状态约束时,使用 引入断言

✅ 收益

  • 代码更加直观清晰,无需依赖注释也能懂。

🔁 Duplicate Code(重复代码)

🧾 症状

  • 两段代码看起来几乎一样。

🧠 问题原因

  • 程序员之间没沟通好,重复造轮子;
  • 或者赶工时复制粘贴了代码。

🛠️ 应对方法

场景处理方法
同一个类中多个方法重复提取方法
同层级两个子类中重复提取方法 + 上移字段
构造函数中重复上移构造函数体
类似但不完全相同模板方法
不同算法做同一事替换为最佳算法
不同类中重复提取超类或提取类
条件判断中重复执行合并条件表达式或提取方法
条件分支中都有相同代码合并重复的条件片段

✅ 收益

  • 代码更短小精悍
  • 更易维护和复用。

💤 Lazy Class(懒类)

🧾 症状

  • 类几乎没什么作用,但还存在。

🧠 问题原因

  • 可能是之前重构后变得空了;
  • 也可能是为“将来可能的功能”留的坑,结果没填。

🛠️ 应对方法

  • 内联类 删除它;
  • 或者 合并继承结构 把它合并掉。

✅ 收益

  • 减少冗余类,代码更简洁,维护负担更小。

📦 Data Class(数据类)

🧾 症状

  • 只有字段、getter/setter,没有任何逻辑。

🧠 问题原因

  • 只当数据容器用,没有行为逻辑;
  • 忽略了“对象应该操作自己的数据”这一点。

🛠️ 应对方法

  • 封装字段,防止外部随意访问;
  • 封装集合,避免直接操作集合;
  • 客户端有逻辑的,迁移过来用 提取方法 / 移动方法
  • 去掉多余访问方法,使用 移除设置方法隐藏方法

✅ 收益

  • 数据与操作结合,更面向对象;
  • 客户端代码更清爽。

🪦 Dead Code(无用代码)

🧾 症状

  • 某些变量、方法、类再也没用到。

🧠 问题原因

  • 改需求时没人清理旧代码;
  • 有些分支永远执行不到。

🛠️ 应对方法

  • 用 IDE 找无用代码;
  • 删除参数内联类折叠继承结构都可用。

✅ 收益

  • 精简代码,维护成本下降

🧠 Speculative Generality(推测性泛化)

🧾 症状

  • 出现了一些“可能将来会用”的类、方法、字段,但现在根本用不到。

🧠 问题原因

  • 提前设计了很多“保底方案”,但未来功能没做成。

🛠️ 应对方法

类型处理方法
未用抽象类折叠继承结构
多余委托类内联类
未用方法内联方法
未用参数移除参数
未用字段直接删除

✅ 收益

  • 代码精简,避免“写给未来的幽灵功能”。

⚠️ 可忽略情况

  • 开发框架时,保留给“用户未来扩展”的 API 是合理的;
  • 删除前确认不是测试代码依赖。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值