膨胀

Lobsters Hottest 新闻

摘要

一位开发者反思了应用中混乱的核心数据结构,承认技术债的存在,但表示除非它阻碍AI代码生成,否则不会优先修复。

<p><a href="https://lobste.rs/s/ejogde/bloat">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/06/03 19:48

# 臃肿之痛:开发日志 来源:https://milkandcigarettes.com/notes/devlog/the-bloat 就像任何自然演化的不完美软件一样,我的应用也长出了一套自发生长的、未经规划的核心数据结构,几乎所有系统都依赖于此。要连根拔起它,哪怕只是轻微晃动,都可能在代码库中意想不到的角落扯出裂缝。 我的这套数据结构是对歌曲及其编舞的内部中间表示。核心应用用 TypeScript 编写,而许多用于生成和分析音乐的服务则用 Python 编写。 歌曲必须在两个生态系统中表示和处理。有时我们还得把它们与 MusicXML 相互转换。 但具体细节其实并不重要——无论是对于你阅读,还是对于我思考。这不过是一个经典的、留给智能体去构建的黑箱。 我们需要的只是它能工作。只要正确的输入映射到正确的输出,没人在意它是不是一坨又臭又烂的代码。 内部实现与外界解耦——谁都不该关心这个巨兽肚子里装着什么。 然而,我却在意的。我看了。在一次代码评审中,我起了好奇心。 最高质量的代码 最高质量的代码 亮点包括: - `validation.py` 中 750 行的喜悦,包括救命的辅助函数如 `_validate_optional_bool` 和 `_expect_string`。 - 一次半生不熟的 JSON 序列化重造尝试,其中闪耀着 `if value is True: return "true"` 这样的美丽宝石。 - 一个 `roundtrip.py` 用于媲美飞船级的端到端验证:精心处理省略字段与 `undefined` 字段的细微差别,以及对象键可能随机顺序的微妙舞蹈。 这太糟糕了。而且愚蠢。而且一点都不重要。 于是我坐在花园里,抽着烟,想:我什么时候才能修好这个?答案是:永远不会。 我永远不会有一天把它当作最高优先级。我永远不会在意到把它放进路线图,也永远不会偷偷在夜里花一小时把它打磨干净。 我最多能做的就是随手丢出一个我常备的众多模板化“降级提示”之一,祈祷它能抹平问题,而不是再在上面拍一个过度设计的补丁。 这是正确的决定,但并不能让我开心。 我只能找到一个未来场景,会迫使我去涉足重构这团乱麻:如果它阻碍了智能体迅速制造其他混乱。 上帝能创造一块重到连他自己都举不起来的石头吗?我其实不关心。但我知道,AI 可以写出复杂到连 AI 自己都无法理解的代码。 如果未来某个时刻,这个模块长出足够多的触手,使得进一步的修改变成一项笨重、纠缠、消耗大量 token 且容易出错的工作,那么我就别无选择,只能卷起袖子,对我的机器人吼一声,让它把这堆杂草给割掉。 在那之前,我们就只能忍受臃肿。

相似文章

AI记忆正成为新的技术债务。

Reddit r/AI_Agents

文章警告说,虽然AI记忆系统在演示中令人印象深刻,但它们常常导致过时的事实、冲突的偏好和损坏的摘要,从而造成未来的调试噩梦和技术债务。

我决定回归手写代码

Hacker News Top

作者在重构一个 Kubernetes 仪表盘工具时反思道,虽然借助 AI 进行“氛围编程”(vibe-coding)能加速功能开发,但在缺乏人工监督的情况下,往往会导致架构臃肿和技术债务。

最终瓶颈

Armin Ronacher

一篇反思性博客文章,探讨了代码生成中AI加速如何压倒审查流程,在软件工程中创造了新的瓶颈。并与历史上的工业瓶颈进行了类比,建议将抑制输入作为必要回应。