当代码正确性不再是瓶颈
大型语言模型在代码生成上的能力已接近完美。得益于代码的可验证性——可以让模型生成代码后用隐藏测试用例来检验——强化学习能够提供清晰的奖励信号,推动模型持续优化。然而,代码能通过测试并不意味着它是好的代码。物理学家出身、现就职于Earendil公司的研究者指出,行业面临一个被严重低估的问题:AI生成的代码往往形式正确但逻辑臃肿,引入不必要的抽象层、产生大量重复代码、做出糟糕的设计决策。在那些每月新增数百万行代码的项目中,人类开发者已经很难跟上代码库的膨胀速度。
机器判官的失效
研究者梳理了行业内测量代码质量的主流方法,首先对AI打分进行了系统测试。最直觉的方法——让模型在1到10的评分表上给代码质量打分——被证明与随机数生成器无异,结果不稳定且缺乏区分度。更高级的方法是让模型在两份代码方案A和B之间做偏好选择,但这种方法的结论高度脆弱:改变变量名或重新排列代码顺序就可能翻转模型的判断。尽管如此,行业中使用AI评估代码质量的做法仍然非常普遍,这导致许多人对代码质量的感知建立在一个基本不可靠的测量工具之上。
行数增长与重复率的爆炸
研究者观察到一个反复出现的模式:在AI辅助开发的项目中,每添加一个新功能,代码行数有时会出现爆炸式增长。这不是个别现象,而是结构性问题。AI模型倾向于通过添加新的代码来解决每个问题,而不是重构或复用现有代码。随着时间推移,重复代码的比例持续上升,抽象层次不断增加,代码库变得越来越难以理解和维护。这种增长模式用物理学的语言来说,就像是熵增——系统的无序度单调增加,而抵抗熵增需要外部持续做功,即需要人类开发者有意识地进行代码审查和重构。
物理学家的实验方法论
作者在文章中展示了从物理学实验方法出发解决这个问题的思路。首先进行文献调研,了解学术界已有的代码质量度量方案;然后调研工业界的实践,发现大部分公司依赖的仍然是基于规则的静态分析工具和人工代码审查。作者认为这种现状令人失望,因为行业对代码质量的判断仍然基于直觉而非量化。他提出,测量代码臃肿度需要新的指标体系,不能简单地复用代码正确性的评估方法,因为正确性可以二元判断,而质量是一个连续的多维空间。
智能代理也救不了的恶性循环
一个常见的反驳是:既然AI能写代码,也能让AI来维护和重构代码。研究者对此提出了直接的反驳:代理目前无法有效处理代码臃肿问题。当代码库膨胀到数百万行时,即使是最先进的AI代理也会面临上下文窗口限制,无法同时理解整个代码库的结构。代理倾向于采用局部最优策略——解决眼前的问题而不考虑对全局代码结构的影响——这恰恰会加剧臃肿问题。在实践中,用AI代理重构AI生成的代码往往产生更多代码而非更少,形成恶性循环。
行业需要量化的起点
研究者最后呼吁行业从直觉驱动转向数据驱动的代码质量管理。他建议引入可量化的臃肿指标——例如代码重复率、抽象层次深度、跨模块依赖密度等——并将其集成到CI/CD流水线中,作为与代码正确性并行的质量门禁。虽然这些指标本身也需要验证和调优,但至少提供了一个客观的讨论基础,而非当前依赖个人代码品味的主观判断。当AI让代码生成变得廉价时,代码质量的度量和维护成本将成为决定软件长期可维护性的关键变量。