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

原文: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 总结道。

相关推荐
蹦蹦跳跳真可爱5891 小时前
Python----深度学习(基于深度学习Pytroch簇分类,圆环分类,月牙分类)
人工智能·pytorch·python·深度学习·分类
蚂蚁20142 小时前
卷积神经网络(二)
人工智能·计算机视觉
z_mazin4 小时前
反爬虫机制中的验证码识别:类型、技术难点与应对策略
人工智能·计算机视觉·目标跟踪
lixy5795 小时前
深度学习3.7 softmax回归的简洁实现
人工智能·深度学习·回归
youhebuke2255 小时前
利用deepseek快速生成甘特图
人工智能·甘特图·deepseek
訾博ZiBo5 小时前
AI日报 - 2025年04月26日
人工智能
郭不耐5 小时前
DeepSeek智能时空数据分析(三):专业级地理数据可视化赏析-《杭州市国土空间总体规划(2021-2035年)》
人工智能·信息可视化·数据分析·毕业设计·数据可视化·城市规划
AI军哥6 小时前
MySQL8的安装方法
人工智能·mysql·yolo·机器学习·deepseek
余弦的倒数6 小时前
知识蒸馏和迁移学习的区别
人工智能·机器学习·迁移学习
Allen Bright6 小时前
【机器学习-线性回归-2】理解线性回归中的连续值与离散值
人工智能·机器学习·线性回归