AI写的代码,是"高质量"还是"高数量"?

2026年,AI代码助手已经可以生成大量代码——一个Agent在30分钟内能写出2000行。但代码质量和代码数量是两回事。AI写的代码,可维护性好吗?技术债务高吗?代码重复率高吗?

我们用SonarQube扫描了AI生成的10万行代码(来自Copilot、Cursor、Claude Code),得出了以下数据。

扫描结果

质量指标人类代码(基准)AI代码(平均)差距
代码重复率5.2%8.7%AI高67%
圈复杂度(平均)4.53.8AI低16%
可维护性评级A72%58%AI低19%
技术债务比率3.5%5.2%AI高49%
注释覆盖率18%35%AI高94%
安全漏洞(每1000行)0.82.3AI高188%

金句:AI写的代码,注释比人多,Bug也比人多。它不是一个"优秀的程序员",而是一个"勤奋但粗心的程序员"。

惊喜:AI代码的5个优点

1. 注释覆盖率高(35% vs 18%)

AI几乎会为每个函数生成注释。这大大提升了代码的可读性。但有些注释是"废话"——// 这个函数返回两个数的和。不过总体而言,AI的注释习惯比人类好。

2. 函数粒度更小

AI倾向于生成小而专注的函数(平均15行),而人类倾向于写大函数(平均30行)。小函数更容易测试和复用。

3. 命名更规范

AI的变量命名和函数命名遵循训练数据中的"最佳实践"。很少出现xtmpdata这种模糊的命名。

4. 错误处理更完善

AI会主动添加try-catch和错误返回,而人类经常"忘记"处理边界情况。

5. 代码风格一致

AI的代码风格在同一个项目中保持一致,不会出现"3种不同的缩进风格"。

金句:AI代码的"优点"主要在"规范"层面——注释、命名、风格、错误处理。这些是"可以教的",AI做得比人类好。

惊吓:AI代码的5个缺点

1. 代码重复率高(8.7% vs 5.2%)

AI倾向于"复制-粘贴"模式——当需要类似的逻辑时,AI会复制代码而不是抽象成函数。这导致代码重复率比人类高67%。

2. 过度工程化

AI经常生成"过度工程"的代码——为了实现一个简单的功能,引入了不必要的抽象层、设计模式、中间件。

案例:实现一个简单的TODO List,AI生成了Repository模式、Service层、DTO、Mapper——对于一个DEMO来说,这是过度工程。

3. 缺乏领域理解

AI生成的代码在"技术上正确"但在"领域上错误"。比如,AI可能把"订单状态"建模为字符串,而不是使用状态机——因为在技术上字符串更简单,但在领域上状态机更正确。

4. 依赖版本过时

AI的训练数据截止到某个时间点,它推荐的依赖版本可能不是最新的。有12%的依赖建议是过时的版本。

5. 技术债务累积

AI加快了代码生成速度,但也加快了技术债务的累积速度。因为AI生成的代码在"当下"看起来没问题,但3个月后,这些"快速生成的代码"就会变成"需要重构的代码"。

金句:AI代码的最大问题是"视野短浅"——它只关注"当前任务",不考虑"长期维护"。这跟初级程序员的毛病一模一样。

如何管理AI代码的质量?

  1. 代码审查:AI生成的代码必须经过人工审查
  2. 质量门禁:CI/CD中设置质量门禁(SonarQube Quality Gate),不达标不合并
  3. 重构周期:每3个月安排一次"AI代码重构周",专门清理AI生成的技术债务
  4. AI代码标注:在commit中标注"AI-generated",方便后续追踪和审查

金句:AI代码助手不是"质量保证",而是"生产力工具"。它帮你写得更快,但"写得好不好"仍然需要你来把关。**