用 AI 生成代码时,我常遇到一个头疼的问题:他总是倾向于拆分我的代码,把一个函数变成一堆小函数,把一个文件变成一堆小文件,好像这样才符合“行业最佳实践”。
比如一个简单的 sendMessage(user, message)
,AI 会把它拆成 message builder、message sender、message types 等五六个组件,分散在不同文件中。其实这些组件根本不会被重用,它们只完成这一个功能。结果就是我读自己的代码都费很大劲,更不用说修改它。
后来我知道这个问题叫做 “过度抽象”。
一开始我不明白 AI 为什么会这样,后来发现原因是,我在 cursor 的设置里用了一些网上流行的提示词,比如以“You are an expert in…”或者“You are a senior engineer…”开头的,提倡“遵循最佳实践”的提示。使得它果真就像个来自大公司的高级程序员,在这边不停拆分和抽象他妈的代码。
于是我开始迭代我的提示词,并让它向 Ken Thompson 之类的远古大师们学习,最后得到了一个我很喜欢的版本。它总是倾向于选择最简单、直接的解决方案,避免不必要的抽象。函数变长,文件变大了,但代码更清晰、更可靠了。
去你妈的最佳实践 / expert / senior engineer,再见,byebye。