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

6 天前
 qq1147

血和泪的教训:

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

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

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

2718 次点击
所在节点    程序员
19 条回复
salor
6 天前
AI 拉的💩让 AI 自己擦屁股没毛病。
勤提交 git 倒是真理。
TimePPT
6 天前
试过重构了几次,包括前端、后端,有成功有失败。

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

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

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

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

当然,这个目的很容易达成。但是,重构完发现这个复杂度并没有和预想中那样有所下降,反而还提升了不少。这究竟算重构成功了呢,还是算重构失败了?实在是有些难评。。。不过,这个副作用倒是收获了“防御式编码”的效果。毕竟,这代码被我搞得更难理解了!
yjxjn
4 天前
@Moishine 如果重构其中的模块,确实不错,但是如果重构整个工程,只要你不仔细 review ,AI 总会给你一个大惊喜~
yjxjn
4 天前
@CyouYamato 我重构过,我的结论就是比如某些小模块,AI 确实能做的不错,但是如果想重构整个工程,这货绝壁给你改的乱七八糟的。甚至完全破坏了。基于 CODEX 和 CC4.5,花了我 6 个小时,直接干掉了 400credit ,结果一跑,发现从第一步开始这货就把配置文件给我改了。😄,最终结果就是干脆跑不起来,页面样式都丢了不少。
所以长记性了,一个模块一个模块重构,整个工程重构慎用。
yjxjn
4 天前
@xuanbg 抽重复代码做为接口方法来重构,AI 特别擅长,效果很好,代码写的比我强,但是比如你没按照最佳实践写,让他重构整个工程,那真是一言难尽。鸡肋。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1163638

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX