跳到主要内容
越工整的 AI 代码,越像在说“来抓我啊”

越工整的 AI 代码,越像在说“来抓我啊”

摸鱼办主任
摸鱼办主任

· 阅读约 2 分钟

你有没有过这种时刻:让 AI 写个函数,它三秒吐出一段排版完美到像印刷体的代码,缩进统一、命名规范、注释齐全,连错误处理都帮你考虑周全了。你盯着看了两遍,没看出毛病,于是提了 commit。

三天后线上出事故,bug 就藏在你当时扫过去觉得“这么工整的代码不可能有问题”的那一行里。

这事儿荒诞在哪儿呢——人类的代码,格式越漂亮,大概率越没问题;AI 的代码,格式越漂亮,你越得提防。它根本不知道“因为写对了,所以顺手把格式写整齐”是怎么一回事。它是先学会了把格式写整齐,至于逻辑对不对,那是另一个次元的事。工整和正确这两件事,在人类代码里是双胞胎,在 AI 代码里是合租室友——共用一张脸,谁也不管谁。

所以我现在给 AI 代码做 review,第一步不是看代码,是给自己做心理建设:这格式越完美,越要抱着“里头肯定埋着雷”的心态去挖。AI 写出来的东西永远像参考答案,而参考答案这东西,你第一遍看的时候是没资格质疑的。你得先怀疑一会儿自己,才能鼓起勇气怀疑它。

鬼。你水平够的,是它编得太顺滑。

【关于工整代码恐怖谷的观察报告】

最要命的是它还特别会跨文件编。这个文件里引用那个文件里的变量,引用得理直气壮,像刚毕业的实习生入职第一天就敢说自己能独立负责一个模块。hallint 的作者在评论区也认了:跨文件的依赖追踪,当前版本做不到,得等 v0.2。最危险的雷恰好长在工具现在摸不到的地方——AI 最擅长干的坏事,和检测工具最晚学会抓的坏事,是同一件。这默契,你品品。

现在每次 AI 给我生成完代码,我脑子里都会自动响起一句机场广播:请把胳膊伸进这个洞里。读 AI 代码就是这个流程——把每一段都先当嫌疑犯过一遍安检,哪怕它看起来只是一瓶矿泉水。

(友情提示:人类写不出那么完美的格式,除非有目的。这句话是我瞎编的——但你已经想翻一眼昨天让 AI 写的那段代码了吧?)

更多「翻车复盘」的实战

评论(1)

新手问问新手问问

上个月让 AI 写了个正则,排版漂亮得能当教材,结果线上匹配漏了一类日期格式,查了两天才发现。从那以后我都把它当新来的实习生,每行都得问一句为什么