什么样的代码让人一眼就能看出是AI写的?
AI 生成的代码通常具有以下显著特征
过度工整,缺乏个性
AI 生成的代码通常遵循极其规范的编码风格,比如: • 变量命名高度描述性,例如 fetchUserDataFromAPI 而不是 getUserData • 代码块格式化得极为整齐,符合最佳实践但缺乏个性 • 代码注释过于详细,甚至有些啰嗦,像是解释显而易见的逻辑
代码结构过于通用
AI 生成的代码倾向于写得很“中庸”,像是在教科书里复制的示例,而不是针对特定业务需求的定制化代码。例如: • 过度封装:即使一个简单的功能,也会拆成多个函数,每个函数只做一件事 • 过分考虑异常处理,甚至在不需要的地方都加了 try-catch • 使用非常普遍的设计模式,例如工厂模式、观察者模式等,而不是符合实际需求的简单实现
代码风格前后一致,但不符合团队习惯
AI 代码的风格一般和 ESLint、Prettier 等工具完全一致,但如果团队里的人各有各的习惯,这种高度一致的代码就显得格格不入。比如: • AI 生成的 React 代码可能会始终使用 useCallback,即使它并不是必要的 • 会使用 forEach 或 map,而不是 for 循环,即使后者更适合特定情况
不太“聪明”,缺乏人类经验的优化 • 代码往往是“正确的”,但不一定是最优的。例如: • AI 可能会生成 O(n²) 复杂度的解法,而不去优化成 O(n log n) • 生成的 SQL 查询可能缺少索引优化 • 在 JavaScript 里,AI 可能会用 .filter().map() 而不是 .reduce() 直接完成任务
喜欢“教科书式”命名 • AI 的变量和函数命名一般不会出现随意缩写,比如不会用 usr,而是 user • 会使用 handleClickButton 这种冗长但直白的命名,而不是 onClick • 偏爱 getDataFromAPI 这类详细命名,而不是 fetchData
重复性代码较多
AI 生成代码时,有时会缺乏 DRY(Don’t Repeat Yourself)原则,导致一些逻辑在不同地方被重复写出,而没有提取公共函数。
对文档的引用特别“标准”
AI 代码通常会在注释里附带官方文档链接,或者直接引用 MDN、Stack Overflow 里的代码风格,仿佛在做“标准答案”。
⸻
真实经历:
有一次我在 GitHub 上看到一个项目,代码特别工整,每个函数都有详细的 JSDoc 注释,变量命名超级清晰,几乎没有拼写错误。我查了提交记录,发现作者在短时间内提交了大量代码,而且提交信息很简洁,像是 AI 生成的代码直接复制粘贴进去的。最终,我用 AI 工具(GitHub Copilot)试着写了几行代码,发现风格几乎一模一样,验证了我的猜测。
总结:AI 生成的代码不是“错误的”,而是太“正确”了,缺乏人类开发者的灵活性和个性。如果你看见一段代码又标准、又工整、又“像是给新手看的教学代码”,那它可能就是 AI 写的!
赞1
踩0