开发者生态
morning
人工智能的使用会产生脆弱的代码库
摘要
I can only speculate as to the reasons why I was laid off from Meta in May, but I suspect that one of the reasons is that I was a little bit more resistant to adopting AI/LLMs as coding tools than som...
the
that
was
code
can
and
this
some
using
saw
2026-11-10
1 阅读
约5分钟阅读
plun9
字号:
我只能推测我在 5 月份被 Meta 解雇的原因,但我怀疑原因之一是我比一些同龄人更不愿意采用 AI/LLM 作为编码工具。别误会我的意思,在我的最后几个月里,我至少 90% 的代码都是使用 AI 生成的,这是获得不错评级的最低要求。但人工智能并没有使我编写的代码量增加十倍。它甚至没有2倍。我专注于代码质量。我看到一些严重依赖人工智能的同行推送的代码,我发现它是脆弱的代码。从长远来看,有许多微妙的问题会导致技术债务,甚至一些非常明显的问题也被非常优秀的程序员所忽视。例如,我看到我团队中最好的程序员之一尝试合并使用 javascript 事件实现鼠标悬停 CSS 效果的代码,而不是使用 :hover 选择器,这是一种完全不可扩展的编写鼠标悬停的方式。现在我受雇于另一家大型科技公司,我已经完全转变为使用人工智能生成 100% 的代码,因为这是今天的期望。尽管如此,我看到很多人开始意识到,这不是继续开发大规模 SaaS 产品的可持续方式。人工智能倾向于解决能够很好地适应其上下文窗口的问题,但它完全忽视了在相对较小的框架中无法理解的长期问题。在这篇文章中,我将列出人工智能使用导致脆弱代码库的四种方式,这些代码库无法满足高可用性和高可扩展性 SaaS 应用程序的需求。顺便说一句,这篇文章的每一个字都是人写的。尽管下面的图像是由 AI 生成的,但本文并非 AI 废话。人工智能使代码库变得脆弱的四种方式 以下是我所看到的人工智能生成脆弱代码库的四种最常见方式。 1.人工智能编写浅层测试现代法学硕士最明显的失败之一是他们倾向于编写简单的自动化测试用例,而这些用例不涵盖对人类重要的事情。我经常看到 AI 代理编写大量的 get/set 方法测试,这些测试很简单,通常不需要太多测试。当 AI 编写 e2e 测试时,它们往往只涵盖代码库中已经涵盖的情况。换句话说,人工智能编写的测试仅涵盖一种类型的用户,或者仅涵盖表面级别的交互。这会在测试覆盖率中造成巨大的差距,而开发人员无法看到这些差距,因为它们没有被行级覆盖率指标捕获。 2. AI 编写过于复杂的代码 AI 也倾向于编写过于复杂的代码。当一个辅助方法就足够时,它经常使用两个或三个辅助方法。它试图遵循 DRY 等编码准则,但没有意识到这种僵化所增加的复杂性使人类开发人员更难以调试或理解代码。 3. 对人工智能的依赖会降低人类的理解力 这是人工智能代码库的第三个问题:人类不理解它们。公司依赖人工智能代理生成代码的时间越长,理解代码库的开发人员就越少。这意味着开发人员无法执行构建弹性代码库所需的操作。他们对数据结构和算法的理解不够深入,无法看出拉取请求何时包含无法与预先存在的结构一起使用的新抽象。 4. 人工智能的发展速度太快,无法维持高质量的栏 人工智能的发展速度太快,以至于人类开发人员无法维持高质量的栏。每个拉取请求都比前一个拉取请求来得更快,并且必须在更短的时间内进行审查。这导致开发人员浏览代码并遗漏关键细节,从而导致长期技术债务。诸如测试差距和命名不当的变量之类的小质量问题会在代码库中不断积累,直到变成一堆意大利面条代码。代码库脆弱的四个迹象如果您不确定编码代理是否会损害您的代码库,那么您可能会寻找由 AI 生成的代码库脆弱的以下症状。 1. AI 生成的代码库有更多事件 当您将部门切换到代理编码时,事件数量是否开始慢慢上升?起初,当我们都使用代理来生成大量代码时,它似乎与传统编码没有什么不同。 PR 来了并合并了,一切看起来都很好。但是,哦,月底推出了一款 p0,然后下个月又推出了两款 SEV。然后下个月更多。现在,经过一两年的代理编码后,似乎每个周末都会发生一次事件。人工智能编码代理是影响客户的事件增多的原因。 2. AI 代码库中从事件中恢复需要更长的时间不仅事件更多,而且事件的缓解也需要更长的时间。事实是,您团队中的人类开发人员现在对代码库的了解更加肤浅。如果你的鳕鱼
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱