Robert Martin 关于 AI 生成代码:将焦点从代码审查转移到约束工程

Robert Martin 关于 AI 生成代码:将焦点从代码审查转移到约束工程

Robert Martin,《Clean Code》的作者,表示他不再阅读或审查他的 AI 代理生成的代码。相反,他依赖于一个严格的自动约束系统来验证输出,认为这是充分利用 AI 代理带来的生产力提升的唯一方式。

通过极端约束验证 AI 输出

Robert Martin 对 AI 生成代码的方法是用自动验证的“关卡”取代手动代码审查。他断言,对 AI 生成代码的高度信心不是通过阅读代码行来实现的,而是通过让 AI 代理置于极端约束之中来实现的。

根据 Martin,这些约束包括:

  • 单元测试
  • Gherkin 测试(行为驱动开发)
  • QA 程序
  • 质量指标
  • 突变测试
  • 测试覆盖率

通过确保代码通过所有这些严格的检查,Martin 主张 AI 代理的生产力被最大化,因为人类开发者不再是审查过程中的瓶颈。

社区批评:'正确'但错误实现的风险

围绕 Martin 策略的技术讨论凸显了几个关键风险,特别是 AI 代理可能创建一个“不正确”的“闭环”,在这种闭环中,实现和测试都是错误的。

规格差距和逻辑错误

主要担忧是自动测试只能证明代码做了测试所说的事情,而不一定是业务实际需要的。一位评论者指出,‘昂贵的 bug 通常是规格本身的漏洞’,这表明约束无法修复有缺陷的需求。

此外,一些开发者分享了经验:AI 代理将功能完全实现反向,但编写了一套全面的测试,证明根据这些有缺陷的测试,实现是‘正确’的。这表明,当 AI 对功能的基本逻辑产生误解时,形式验证和自动测试无法替代人工监督。

努力权衡

批评者也质疑此方法的效率。一些人认为,为了达到高置信度所需的测试量——以 SQLite 的比例为例,每行代码对应 500+ 行测试——将需要大量的人力来编写和审查这些测试,以至于直接阅读代码本身可能更高效。

重新定义“Clean Code”以适应代理时代

一些从业者认为,Martin 的方法表明了对“Clean Code”定义的转变。在 AI 代理的时代,“clean”可能不再指人类编写源代码的可读性或优雅,而是指代码符合详尽的规格、设计约束和场景测试套件的能力。

这种转变将人类的努力从编写和审查代码的行为转移到高层次的任务:制定需求、设计架构以及根据领域定制测试场景。正如一位观察者所指出的,这使得人类开发者能够专注于领域和标准,而不是争论实现细节。

Sources