重构是在不改变外部可观察行为的前提下,改善代码内部结构。它的用处:消除重复与坏味道,让代码重新变得易读易改;把一次性的“打补丁”纠正为合理的抽象,降低后续需求的边际成本;还常常在阅读、重组旧代码的过程中暴露隐藏 bug。本质上,重构是在偿还技术债、维持代码的可演进性——不做重构的系统,改动会越来越慢、越来越危险。

应该重构的时机:

  • 事前三板斧:加新功能前发现现有结构碍事,先重构再加功能。
  • 重复出现三次:同样的逻辑第三次出现时提炼抽象(Rule of Three)。
  • 读不懂时:读懂一段代码的过程本身就是把它重构清晰的最好机会。
  • Code Review 与 bug 修复后:顺手清理现场(童子军军规)。

易错点:重构不是重写,必须小步前进、测试全程保护;不要在紧赶交付的同一个提交里混入大规模重构与功能变更,否则 review 和回滚都困难;没有测试覆盖的代码,先补特征测试再动刀。