人工智能生成的代码如何加剧技术债务

原文:How AI generated code compounds technical debt

作者:Bill Doerrfeld


"在我 35 年的技术生涯中,我从未见过在如此短的时间里产生如此多的技术债务。" ------作者:Bill Doerrfeld

GitClear 最新报告显示,随着 AI 编码工具越来越普及,代码重复率正在上升,代码质量却在下降。

如今,编写代码比以往任何时候都要容易。借助现今基于大型语言模型(LLM)的编码助手嵌入在 IDE 中,你只需在提示区输入一句话,或者按一下 Tab 键,就能生成多行代码。

自从AI 编码工具问世以来,诸如"不重复你自己"(DRY)等工程最佳实践就逐渐被忽视。

"在我 35 年的技术生涯中,我从未见过在如此短时间内产生如此多的技术债务。" API 布道师 Kin Lane 如此评价 AI 生成代码的泛滥。

GitClear 的第二份年度AI Copilot 代码质量研究对 2020 至 2024 年期间的 2.11 亿行代码变更进行了分析,这些代码来自匿名私有库和 25 个大型开源项目。研究结果显示了多重代码质量下降的信号,为一味追求 AI 带来的"快速胜利"可能埋下的长期隐患敲响了警钟。


代码复用正走向衰落

在 2024 年,GitClear 追踪到"相邻代码块中有五行或更多重复行"这一现象的出现频率增长了 8 倍------与两年前相比,代码重复比率提升了十倍。

同一年中,46% 的代码变更都是新增行,而复制粘贴的行数也超过了移动(moved)行数。"移动行"这一指标由 GitClear 提出,用于追踪对已有代码的重新排列,通常是为了将现有功能整合为可复用的模块。GitClear 和 Amplenote 的 CEO Bill Harding 表示:"系统的重构,尤其是对已存在代码的移动,通常标志着代码复用。"

而一年又一年的"移动代码"指标下降,意味着开发者对已有代码的复用意愿正在减弱。这与原本业界强调的最佳实践相悖,也预示着未来更多冗余系统将出现,而函数或功能的合并会更少。

图 源自 GitClear 的研究报告 AI Copilot Code Quality。


代码行数变多 ≠ 成功

不加约束的 AI 代码生成可能给那些生命周期较长的代码库带来沉重的维护负担。与人们认定的生产力提升相反,软件厂商 Harness 发布的2025 年软件交付现状报告却发现,大多数开发者在调试 AI 生成的代码以及处理其安全漏洞上花费了更多时间。

对于那些曾从 StackOverflow 复制过代码的开发者来说,频繁出现的复制粘贴行数也许不算什么新鲜事。然而,在 AI 的助推下,这种做法可能会导致技术债务的大幅飙升。

谷歌在 2024 年的 DORA 报告中指出,对 AI 的使用呈现利弊并存的态势:AI 使用率提升 25% 会加快代码审查并改善文档,但软件交付的稳定性则下降了 7.2%。


无限的代码意味着无限的维护

毫无疑问,代码助手非常有价值,大多数管理者都认为 AI 对保持竞争力至关重要。然而,不加管理地生成大量基于 LLM 的代码,是否会威胁到软件的可维护性?

数据表明,如果目前的趋势持续下去,修复缺陷和重构代码可能会占据开发者的大部分工作时间。GitClear 和 Amplenote CEO Bill Harding 说:"如果开发者的生产力继续只由提交次数或新增行数来衡量,那么 AI 引起的可维护性下降问题只会进一步加剧。"

除非团队更加注重可持续发展,否则 AI 将使得软件规模日益膨胀,进而需要"无期限的维护"。


复制粘贴的代价

除了可维护性之外,臃肿的代码还会带来成本压力。"包括我在 2024 年编程的大部分时间里,几乎没人会真正考虑代码在长期带来的开销。"Harding 如是说。

重复的代码不仅更难维护,也会带来额外支出:代码存储会产生云端费用;当相同的 Bug 分散在多处重复的代码块中,测试工作就会变得更加复杂,开发者的运营成本随之上涨。

学术研究也多次证明,"共变更"代码克隆(必须在多个地方同时更新的重复代码块)会导致更高的缺陷率。以华中师范大学 2023 年的一项研究为例,他们就发现代码克隆是种常见做法,但会对软件维护产生负面影响。


在按下 "Tab" 键前三思

GitClear 研究中值得庆幸的一点是,提交之间的时间正在缩短------AI 的确可以被用来抵消前述问题的一部分影响。比如 Cursor 等工具,就能协助开发者改写代码,确保每行之间的逻辑一致性。

然而,尽管 AI 在生成即时代码方面表现出色,它的上下文窗口毕竟有限。人类依然在全局把控、软件整体架构方面拥有不可替代的作用。人类开发者可以通过将重复逻辑重构为可复用的函数、将相关模块整合,或者在合适情况下复用微服务,来让代码库更具凝聚力。

"AI 的确带来了巨大的价值,但今年的数据也证明了,那些目光长远的开发者在按下 'Tab' 键时,往往也会多几分隐隐的担忧。"Harding 总结道。

相关推荐
调皮的芋头35 分钟前
【数据挖掘在量化交易中的应用:特征发现与特征提取】
人工智能·神经网络·数据挖掘
Matlab程序猿小助手2 小时前
【MATLAB源码-第268期】基于simulink的永磁同步电机PMSM双闭环矢量控制系统SVPWM仿真,输出转速响应曲线。
开发语言·人工智能·单片机·嵌入式硬件·算法·matlab·simulink
suishenwifi2 小时前
边缘计算+多模态感知:户外监控核心技术解析与工程部署实践!户外摄像头监控哪种好?户外摄像头监控十大品牌!格行视精灵VS海康威视VS大华横评!
人工智能·安全·边缘计算
Quz3 小时前
使用DeepSeek实现自动化编程:类的自动生成
数据库·c++·人工智能·qt
调皮的芋头3 小时前
数据挖掘中特征发现与特征提取的数学原理
人工智能·计算机视觉·数据挖掘·aigc
阿_旭3 小时前
基于YOLO11深度学习的遥感视角农田检测与分割系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标分割、人工智能
人工智能·python·深度学习·毕业设计·农田分割
forestsea3 小时前
DeepSeek 提示词:常见指令类型
人工智能·deepseek提示词
大囚长4 小时前
神经网络AI原理回顾
人工智能·深度学习·神经网络
罗小罗同学4 小时前
国自然面上项目|基于多模态MR影像的胶质母细胞瘤高危区域定位及预后预测研究|基金申请·25-02-28
人工智能·深度学习·mr·影像组学·医学人工智能
幻想趾于现实4 小时前
Halcon图像预处理算子 sobel算子、傅里叶变换算子、卷积算子
人工智能·算法