用 AI 重构老代码:先做这四步再动手
让 AI 直接重构一个几千行的老模块,结果通常是「代码变漂亮了,但线上出问题了」。老代码里那些看起来多余的判断,往往是有历史原因的。
第一步:让它先「读懂」并输出理解
不要一开始就让它改。先让它输出三份东西:这个模块的职责、外部依赖关系、以及它认为「看起来奇怪但可能是故意」的地方。
第三项最关键。如果它能指出那些 defensive 判断的合理性,说明它真的读懂了;如果它把这些都当成冗余代码准备删掉,就别让它动手。
第二步:建立安全网
重构前必须先有测试。没有测试就先让它补测试——注意是「按现有行为补」,不是「按你认为应该的行为补」。
这一步的副产品是:补测试的过程中你会发现一堆自己都不知道的既有行为。这些才是重构的真正风险点。
第三步:小步改,每步验证
一次只做一类改动,改完立刻验证:
- 第一轮:只改命名和结构,不动逻辑。跑测试确认全绿。
- 第二轮:抽取重复代码。再跑测试。
- 第三轮:替换过时 API。再跑测试。
- 每轮一次提交。出问题时只回滚一轮,不用全推。
第四步:让它自己找漏
重构完成后,让它做一次自查:对比改动前后,列出「行为可能发生变化」的清单。
这份清单通常能抓出两三处你以为等价、其实不等价的地方。逐条确认,比人工 diff 效率高。