用 AI 编程工具,千万不要让 AI 重构代码 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
qq1147
V2EX    程序员

用 AI 编程工具,千万不要让 AI 重构代码

  •  
  •   qq1147 1 天前 2311 次点击

    血和泪的教训:

    1. 如果要重构,一定要先提交代码,保证能回退到没有重构之前的状态!

    2. 哪怕让 AI 梳理代码逻辑形成文档,哪怕自己调试代码跟着走一遍,然后记笔记,也不要让 AI 直接重构代码!

    3. AI 写的代码,能用就行,千万不要随便重构!

    19 条回复    2025-10-09 15:00:36 +08:00
    salor
        1
    salor  
       1 天前 via iPhone
    AI 拉的让 AI 自己擦屁股没毛病。
    勤提交 git 倒是真理。
    TimePPT
        2
    TimePPT  
    PRO
       1 天前   2
    试过重构了几次,包括前端、后端,有成功有失败。

    分享一些经验教训,只能说相对保险,但不一定完全有用,仅供参考:
    1. 重构前与模型充分讨论,并形成技术方案文档,方案中包括项目背景、目标、实现内容、验收标准、验收 checklist ,并根据 codebase 实现伪代码,如果重构涉及文件较多,可以让其给出可被验证的分步实现方案(哪怕中间有冗余的过渡代码或脚手架都没有关系)。
    2. 技术文档人工审阅后,让其严格按照审阅后的进行代码编写与测试,如果变动较大的,按照第一点中规划好的分步骤进行迭代,每次完成后完成 lint/format/test ,无误后 git commit
    3. 最后完成重构后,回归测试没问题,再清理无用依赖、临时文件、僵尸代码。然后再次回归,没问题,提交,并合并分支。
    4. 活用 AI 编程工具提供的 code review 功能,时不时用下,有奇效。
    5. 在 AI 没那么牛 B 之前,未保生产安全,人还是主驾驶。
    TimePPT
        3
    TimePPT  
    PRO
       1 天前
    @TimePPT 补充一下,以上经验仅限 GPT-5 High / Claude Sonnet 4.5 / Gemini 2.5 Pro

    要是用能力再次点的模型,不确定行不行
    lithiumii
        4
    lithiumii  
       1 天前 via Android
    用 aider ,自动帮你 commit
    avenger
        5
    avenger  
       1 天前 via iPhone
    明确需求
    回归测试
    独立分支
    重构失败就重新开始呗
    Moishine
        6
    Moishine  
       1 天前 via Android
    我一直用爱重构的,很好啊
    darkengine
        7
    darkengine  
       1 天前
    重构完了自己当 QA 把关咯,不然直接上线会有惊喜
    MIUIOS
        8
    MIUIOS  
       1 天前
    AI 写的东西最大的特点就是,整体上看没啥任何问题,一扣细节一堆问题。
    mightofcode
        9
    mightofcode  
       21 小时 27 分钟前
    小重构还行 大的还不太行
    CyouYamato
        10
    CyouYamato  
       20 小时 12 分钟前
    只能重构部分的功能/类/函数逻辑,你要是项目大范围一次性重构我目前结论就是做不到.更大的 max 模式不了解.
    我现在接手的代码就是上个哥们花着老板给他充的 200 美刀的 cursor 写的.我找个 bug 我要看乱七八糟一堆文件,目录结构堪称灾难.
    目前只能先动刀目录结构,再慢慢让 AI 先把公共代码抽取出来.后面再重构代码逻辑,改起来头大.但是不改后续写起来真的恶心死了.我又不能只靠 AI 写.
    tlerbao
        11
    tlerbao  
       18 小时 22 分钟前
    我用 cursor ,重构完自己 review ,没问题 commit ,有问题完全跑偏,直接 rollback ,方便的一 B 换个模型再试一次
    bbbblue
        12
    bbbblue  
       16 小时 50 分钟前
    我的经验是 要重构千万别 auto approve
    你就看着 AI 写 实时 review 不对马上纠正/自己上手补充
    会好很多

    然后重构尽可能面积小一点 虽然有子 agent 之类的 但切分还是自己来做吧
    dengj3355
        13
    dengj3355  
       16 小时 20 分钟前
    目前我使用 codex ,非常稳定,几乎不会出错,vscode ChatGpt 5 Codex Plugin 可能会有些问题导致无法 Undo ,使用 Copilot Codex ( preview )总体质量和官方插件差不多,Copilot 会自动做快照,这个很不错,点击对话历史就能回到那时的快照,另外补一嘴,Codex 永远的神!用了 grok claude gemini 甚至 OpenAI 自家的 o4 o3 5 都比 Codex 差远了,Codex 真的可以独立开发一个中小型项目,只需要非常少量的干预即可
    aarontian
        14
    aarontian  
       14 小时 21 分钟前
    经常重构,各种办法都用过了,大都是相对小的几万行的 repo ,拖拖拉拉最后多少重构完了。基本后续需要擦屁股,感觉重构方向清晰的话可能比手动快一点,但不如手动稳。

    无论如何重构后都很依赖测试,AI 多少都会改点逻辑和细节,而重构 prompt 是很难讲清楚所有细节的,最恶心的一回是 cursor 的 gpt-5 免费期间用 gpt5 重构过,各种改动后直接改细节逻辑不说,连配置文件的 c/v 都能复制错(一个 key 给我复制错一个字母害我 debug 半天,这种情况 sonnet 高强度用了大半年从没出现过)
    techphoebe
        15
    techphoebe  
       9 小时 32 分钟前 via iPhone
    重构得有自己的想法,不能放手丢给 ai 搞,很容易过度设计,代码越写越多
    xuanbg
        16
    xuanbg  
       7 小时 35 分钟前
    前段时间重构了一部分代码。重构的目的是将一些重复的类、重复的逻辑抽取出来打成一个包给各个项目使用,以便维护这些公共的功能的时候,东改改西改改,万一哪里没改到出 bug 。

    当然,这个目的很容易达成。但是,重构完发现这个复杂度并没有和预想中那样有所下降,反而还提升了不少。这究竟算重构成功了呢,还是算重构失败了?实在是有些难评。。。不过,这个副作用倒是收获了“防御式编码”的效果。毕竟,这代码被我搞得更难理解了!
    yjxjn
        17
    yjxjn  
       3 小时 11 分钟前
    @Moishine 如果重构其中的模块,确实不错,但是如果重构整个工程,只要你不仔细 review ,AI 总会给你一个大惊喜~
    yjxjn
        18
    yjxjn  
       3 小时 7 分钟前
    @CyouYamato 我重构过,我的结论就是比如某些小模块,AI 确实能做的不错,但是如果想重构整个工程,这货绝壁给你改的乱七八糟的。甚至完全破坏了。基于 CODEX 和 CC4.5,花了我 6 个小时,直接干掉了 400credit ,结果一跑,发现从第一步开始这货就把配置文件给我改了。,最终结果就是干脆跑不起来,页面样式都丢了不少。
    所以长记性了,一个模块一个模块重构,整个工程重构慎用。
    yjxjn
        19
    yjxjn  
       3 小时 4 分钟前
    @xuanbg 抽重复代码做为接口方法来重构,AI 特别擅长,效果很好,代码写的比我强,但是比如你没按照最佳实践写,让他重构整个工程,那真是一言难尽。鸡肋。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4493 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 10:05 PVG 18:05 LAX 03:05 JFK 06:05
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86