别再逐行读代码了

一个AI代理在40秒内写出了300行代码。你打开差异文件,开始逐行阅读,读到大约第90行时,你的眼神开始涣散。等你读完,你本可以自己写出其中一半。那么,这个代理到底给你带来了什么?

别再逐行读代码了
AI模型价格对比 | AI工具导航 | ONNX模型库 | Vibe Coding教程 | PLC在线仿真器 | Tripo 3D | Meshy AI | ElevenLabs | KlingAI | ArtSpace | Phot.AI | InVideo

Robert Martin——那个花了几十年教一代人关心每一行代码的人——给出了一个直截了当的答案。他说他不读他的代理写的代码。他称这是真正捕捉代理生产力的唯一方式。作为《代码整洁之道》的作者,这听起来像是异端邪说。但事实并非如此。这是他整个职业生涯一直在论证的逻辑终点,只是指向了一个新的瓶颈。

1、瓶颈转移了

这是令人不安的算术。一个有能力的代理生成代码的速度远超任何人类阅读的速度,更不用说真正专注地审查了。如果你的工作流程要求人类在发布前阅读每一行,那么你的吞吐量将永远受限于人类的阅读速度。代理现在成了一种非常昂贵的方式来让自己感觉忙碌。

想象一下从手工工具到数控机床的转变。一个木工大师手工检查每一次切割,因为是他们的手完成了切割。机械车间不是这样工作的。没有人会用眼睛去检查铣床的每一次走刀。他们设定公差,然后用测量工具测量成品是否符合这些公差。信任存在于测量系统中,而不是观察主轴转动。

Martin正在为软件提出同样的转变。停止检查切割。构建测量工具。

2、不读代码不等于不关心

对这句话的简单误读是"发布机器人生产的任何东西并祈祷"。这恰恰与他的本意相反。他的实际做法是用如此多的约束来包围代理,以至于坏代码无法存活。

他依赖的约束并不 exotic。它们是他多年来教授的纪律,现在变成了自动化的考验:

  • 验收测试,通常用Gherkin编写,这是一种用近乎自然语言描述行为的格式(给定一个未登录的用户,当他们提交有效凭证时,他们就会登陆仪表板)。这些用利益相关者能理解的术语来固定软件应该做什么。
  • 单元测试和高覆盖率,这样较小的部分就被行为逐个锁定。
  • 变异测试,这是最狡猾的一个。变异工具故意向代码注入小错误,将大于号翻转为小于号,删除一行,然后重新运行你的测试。如果测试仍然通过,你的测试就是一场表演。它们什么也证明不了。变异测试衡量的是你的安全网是否真的能捕捉到东西,这在机器编写代码和(如果你允许的话)测试时非常重要。
  • 从外部读取的质量指标。他不是通过阅读代码来判断代码,而是通过它测量出的结果来判断:测试覆盖率、依赖结构、模块大小和圈复杂度,后者计算通过一段代码的独立路径数量。数字高意味着逻辑纠缠,难以测试且更难维护。你不需要阅读一个函数就知道复杂度得分四十是个问题。

重点是这些都可以机器检查。人类定义一次标准。机器在每次运行时都执行它,以代理的速度,不会在第九十行左右感到疲倦。

3、具体的流水线

今年早些时候,Martin超越了理论,展示了实际的管道。他的设置运行一系列代理,每个代理都有一个狭窄的工作,每个阶段都比前一个更正式:一个将需求塑造成规范,一个编写代码,一个重构它,一个审查架构。随着工作沿着流水线移动,形式性增加,人工干预减少。

想象一条工厂流水线,而不是一个房间里一个天才。原始请求从一端进入。每个工位都有特定的职责和必须通过的特定检查,零件才能前进。人类不是站在每个工位上眯着眼睛看工作。人类设计了这条流水线,最后读取仪表。

他的O'Reilly课程《AI Agents for Clean Code》教授的正是这套验收测试、单元测试、变异测试和代码质量分析。他的Clean Coders系列《Clean AI: Agentic Discipline》用Claude Code这样的代理打字来讲解同样的理念。同样的福音他一直传讲。只是讲坛换了。

4、现在值钱的技能

在软件历史的大部分时间里,核心能力是阅读代码和编写代码。那就是工作。如果Martin是对的,有价值的技能正在悄悄转向编写测试、定义约束和设置代码必须满足的指标。

这里有一个有趣的讽刺。Martin推动测试驱动开发几十年了,常常遭到那些认为写测试很乏味的人的白眼。在代理驱动的世界里,一个严格的测试套件可以说比代码本身更有价值。代码现在便宜且可再生。再问一次代理,你会得到一批新的。测试是持久的资产,因为它们是"正确"到底意味着什么的规范。丢失代码你可以重建。丢失测试你就失去了唯一告诉你代码有多好的东西。

5、这里可能咬你一口

假装每个人都同意是不诚实的。一个强大的工程师阵营提出了完全相反的观点:永远不要发布你不理解的代码,因为你仍然要对此负责。他们的担忧是真实的。测试只能捕捉到你想到要测试的东西。一个微妙的安全漏洞、一个糟糕的架构选择、一个你不想要的依赖,所有这些都可以通过绿色套件,三周后在生产中仍然伤害你。如果你的考验有缺口,代理会乐意将代码直接推过去,而你根本没有看过。

所以诚实的说法不是"阅读代码过时了"。而是默认阅读每一行是对稀缺人类的不良使用。约束必须真正好,而变异测试的存在恰恰是因为大多数测试套件并不像其作者认为的那样好。这个方法的可信度取决于其中最弱的测量工具。

6、纪律没有消失

标题听起来很懒。别读代码了。现实恰恰相反。你是在用系统性的纪律来交换局部的、逐行仔细阅读的纪律,而这种系统性的纪律必须更加严格,因为它在你没有观看的情况下运行。

代理不会让你摆脱纪律。它们要求的是另一种纪律。工艺只是上升了一个层次,从代码到判断它的约束。想想看,这确实是一个非常Bob大叔风格的结局。


原文链接: Stop Reading the Code

汇智网翻译整理,转载请标明出处