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

50 天前
 qq1147

血和泪的教训:

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

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

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

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

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

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

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

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

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

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

https://www.v2ex.com/t/1163638

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

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

© 2021 V2EX