AI 写的代码太乱,我的 4 步重构顺序
上周翻自己三个月前让 AI 补的那个模块,一个文件里塞了十三个函数,改一行得往回滚三屏。AI 写的代码太乱怎么重构,硬读是读不动的,我现在的做法是先定顺序再动手,四步,顺序不能换。
这四步是我修一个 AI 遗留项目时逼出来的。当时我想直接推倒重写,写了半天发现连哪些行为要保住都说不清,只好退回来先理。
AI 写的代码太乱怎么重构:先冻结行为,再谈整理
重构最容易出的事,是你以为在整理,其实在改功能。
所以第一步不是删代码,是把当前能跑的行为固定下来。哪怕没有测试,也要手工把关键路径点一遍,把输入输出记在纸上。
这一步花掉的时间看起来白费,但它是后面三步的地基。行为没冻住,你不知道哪次改动弄坏了什么。
具体动作:列出这个模块对外提供的全部能力,逐个手工调用一遍,把结果抄下来。
二、按调用关系画出真实结构
代码乱不乱,取决于它和你的心理地图差多远。
AI 生成代码有个明显特点:函数之间的调用关系常常比目录结构复杂得多。目录看着很整齐,实际调用到处都是横穿。
具体动作:从入口函数出发,把每个函数往下调了谁记成一张树状图,画完你会立刻发现哪些函数是所有人都在调的。
那些被反复调用的,就是最该先动的。
三、抽公共部分,但一次只抽一处
看到重复就手痒,是我早期最大的毛病。
AI 写的代码里重复特别多,一模一样的逻辑可能在五个地方各写了一遍。这时候正确做法不是一次全抽干净,而是挑被调用最多的那一处先抽。
理由很实际:抽一处,影响范围你能看全;抽五处,出问题的时候你都不知道是哪次改动引起的。
具体动作:找出重复次数最多的那段逻辑,抽成一个函数,跑一遍,确认没坏,再找下一处。
清理重复这件事本身还有别的注意事项,我在AI 写出来一堆重复代码,删之前先看这里里单独写过。
四、改命名,最后才动结构
顺序放到最后的一步,反而是收益最直观的一步。
命名混乱是 AI 代码的通病,同一个概念在不同函数里叫三个名字。你先把名字统一了,很多原本看不懂的地方会自己变清楚。
结构能不动就先不动。改结构和改命名同时做,等于一次改了两种东西,出问题没法定位。
具体动作:把同一个业务概念的不同叫法列出来,统一成一个,全局替换,再跑一遍。
卡在哪儿最费时间
根据我自己这几轮的经验,时间基本耗在两个地方。
一是行为冻结不彻底,手工点的时候漏了某个分支,改到一半才发现,只能回滚重来。
二是一次动的范围太大。这跟改提示词的道理一样,一次改一个变量才找得到因果,我在这上面栽过不止一次。
如果项目是别人交给你的,前面的准备工作还要多一步,接手顺序我在接手别人用 AI 写的项目,怎么开始理里拆过。
常见问题
Q:AI 写的代码太乱怎么重构,能不能直接让 AI 自己来一遍?
A:可以试,但不能直接采信结果。更稳的做法是自己先走完前两步——冻结行为、画出调用关系,再让 AI 按你给的结构去改。你自己都没有结构的时候,没法判断它改得好不好。
Q:重构之前一定要先补测试吗?
A:有条件就补,没条件就用人工回归顶着。补测试的成本可能比重构本身还高,所以关键是「行为有记录」而不是「必须有自动化测试」。手工清单也算数。
Q:四步里如果只能做一步,先做哪个?
A:先冻结行为。这一步看起来最没产出,但它是唯一能让你在改坏之后迅速定位的一步。跳过它,后面三步都可能白做。
相关阅读
- AI 写业务逻辑为什么总漏,我找到 3 个原因
- AI 写出来一堆重复代码,删之前先看这里
- AI 写的代码没注释,怎么快速读懂
- AI 写的代码跑不起来,先查这 5 个地方
- AI 生成的代码怎么找隐藏 bug,3 个土办法
本文作者西米,37 岁程序员,一个人加五个 AI 员工在跑一家公司。踩过的坑和真实账本都写在公众号「西米分享」。
完整代码、踩坑清单与最新进展,都在公众号。
📱 关注公众号「西米分享」