重构模式(Refactoring Patterns)
目标
在不破坏现有行为的前提下,逐步提升可读性、可测试性与可维护性。
适用场景
- 巨型函数、深层嵌套、重复逻辑。
- 历史模块耦合严重,改一处影响多处。
- 需要在持续交付中逐步替换旧实现,而非一次性重写。
执行顺序(强制)
- 先锁定行为:补齐回归测试或特征测试(characterization tests)。
- 小步提交:每次只做一种重构动作(如提取函数、重命名、移动模块)。
- 每步验证:确保测试通过后再进入下一步。
- 接口稳定优先:对外 API 先兼容,内部再逐层替换。
常用模式
- 提取函数(Extract Function):把多职责逻辑拆成具名步骤。
- 引入门面(Facade):先封装旧接口,再在门面后逐步替换实现。
- 依赖倒置(Dependency Inversion):把硬编码依赖替换为可注入接口。
- 删除死代码(Dead Code Removal):仅在有覆盖和调用链确认后执行。
禁止事项
- 无测试直接大规模重写。
- 同一提交混入功能变更与重构变更。
- 修改外部契约却不提供迁移路径或兼容层。
完成标准
- 行为保持一致(回归测试通过)。
- 复杂度下降(函数长度、嵌套层级、重复率可观测改善)。
- 变更说明清晰(记录重构动机、范围与风险点)。