首页/开发/代码质量与评审速查/偿还策略:重构、重写与冻结
技术债与度量63 条

偿还策略:重构、重写与冻结

偿还债务按场景选策略:小步重构(多数情况)、模块级替换(边界清晰时)、冻结维护(只修不扩)、最终重写(最后手段);决定前评估利息与偿还成本的比例。

怎么偿还债务

偿还按场景选策略:小步重构适用于多数情况,模块级替换适用于边界清晰的系统,冻结维护适用于改动频率低的部分,整体重写是最后手段。决定前先评估利息与偿还成本的比例,并确认有足够的测试或灰度手段兜底。

基本信息

常用策略小步重构、模块替换、冻结维护、整体重写
选择依据利息频率、安全网、边界清晰度、双维护成本
风险排序小步重构最低,整体重写最高
必要前提有回归验证手段(自动化测试或灰度)
常见失败重写期间旧系统无人维护

典型使用场景

  • 局部坏味道密集但测试可补,选小步重构
  • 模块边界清晰、接口稳定,选并行替换
  • 改动频率极低的老模块,冻结只修不扩
  • 旧系统依赖已不可维护,评估重写
  • 上线窗口紧张的时期,先降低利息而不是清零债务

策略选择四问

策略选择四问
Q1 该模块每迭代改动几次?(利息频率)
Q2 现有测试能否支撑重构?(安全网)
Q3 边界是否清晰?(能否隔离替换)
Q4 重写期间谁来维护旧系统?(双维护成本)
# 四问的答案决定策略,而不是团队的偏好

偿还策略对照

策略适用风险
小步重构债务局部、测试可补低,可持续
模块替换边界清晰、接口稳定中,需要并行验证
冻结维护改动频率低低,但利息持续累积
整体重写旧系统确实不可救药高,常见失败模式
判断重写是否值得,要看风险与周期:重写期间旧系统仍在演化,两套系统的知识同步成本常常被低估,这是失败的主因。
永远用冻结来回避决定,利息会持续累积:等业务再次提出需求时,改动成本已经高到没人愿意接手。
策略可以混用:同一个系统里,热点模块做小步重构、边界清晰的模块并行替换、边缘老模块冻结维护;关键是每部分都有判断依据与复核时间。

易错点

  • 一上来就整体重写:双系统并行与知识断层拖垮团队
  • 永远冻结从不敢动:利息持续累积,最终无人敢改
  • 没有测试就大规模重构:缺少安全网,缺陷随改动进入主干
  • 只做一次性偿还就停下:缺少日常约束,债务重新长回来

数据来源与参考

  • 《重构》第 2 版(渐进重构优于重写);Michael Feathers 遗留代码策略
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌