重构时,让 AI 只动一个函数
约 3 分钟0 阅读
我有过一次 AI 重构翻车,翻得很惨。
那是个有点年头的模块,我想用 AI 一次性重构——把它的数据结构、命名、分层全理一遍。我给 AI 喂了整个模块,让它「全面重构,提升可维护性」。AI 很兴奋,改了二十多个文件,提交了。
然后跑测试,一片红。我开始一个一个救,越救发现牵连越多——它改数据结构的时候,没同步改所有调用点;它重命名的时候,把两个语义不同的东西改成了同一个名。一个改动带出三个问题,三个问题又各自带出新的。救到最后我分不清哪些改动是有意的、哪些是它顺手带的。
最后我放弃了,回滚了整次重构,从头再来。
大重构为什么必然翻车
那次之后我明白了,让 AI 做大重构,翻车不是偶然,是必然。
重构是个高耦合的操作——改一个数据结构,要同步改所有用到它的地方;调一个函数的签名,要改所有调用点。人对耦合是有感觉的,改之前会预判影响范围。AI 没有这个预判,它会按它理解的最优改法,一次性把多处改掉,但漏改和错改的概率,随改动幅度指数上升。
改动越大,它管的边界越多,漏的越多。一次大重构等于让它同时守住几十个边界,它守不住。
改成「一次一个函数」
我重新做的策略,核心就一条:把大重构拆成无数个小重构,每次只让 AI 动一个函数。
具体流程很笨重:
- 挑一个最底层、没依赖别人的函数,让 AI 重构它,只改这一个。
- 跑测试。绿了,提交,进下一个。
- 红了,立刻回滚这次,因为只动了一个函数,问题一定在这一个里,好定位。
这个流程慢,但极其稳。每次改动的影响范围被锁在一个函数内,出问题就是那个函数的问题,不会有牵连。AI 也轻松——它一次只管一个函数的边界,漏改概率大降。
小步快走的隐藏好处
这个方法有个我没想到的好处:它能让你随时叫停。
一次性大重构,是个不归路——开了头就得走到尾,中间发现方向不对,已经改了一半,回退舍不得,前进又乱。小步重构,每一步都是独立的提交,方向不对随时停,前面改的还能留。
我那次重构,用小步法改了三天,中间有两次发现「这函数其实不用重构」,直接跳过,省了无用功。大重构法我做不到这点——已经改了一团,哪能挑着回退。
AI 的价值在量不在幅
这次经历让我对 AI 在重构里的定位有了新认识。
AI 在重构里最强的不是「大刀阔斧」,是「不知疲倦地做小改动」。一个一个函数地改,对人很烦,对 AI 是它的舒适区——它不会烦、不会累、不会因为第 30 个函数而降低标准。
所以正确的用法是:把重构拆成机器擅长的小步,让 AI 不知疲倦地走完它。而不是把重构想成一次需要「全局视角」的大动作交给它——全局视角恰恰是它的弱项。
收尾
那次翻车之后,我再没让 AI 做过「一次性大重构」。所有重构都拆成函数级的小步,每次只动一个。
慢吗?慢。但慢得可控。大重构快,但快得像赌博——赢了省几天,输了回滚重来更亏。重构这种风险敏感的活,可控比快重要。
让 AI 一次只动一个函数,不是限制它,是把它放在它最擅长的位置上。在它擅长的地方让它使劲干,在不擅长的地方别让它逞强。这是用 AI 做重构的全部秘密。
