Beyond Functional Correctness: Design Issues in AI IDE-Generated Large-Scale Projects

该研究提出特征驱动的人机协同(FD-HITL)框架,利用 Cursor 生成了 10 个大型软件项目,发现虽然其功能正确率高达 91%,但生成的代码仍普遍存在违反单一职责、关注点分离和 DRY 等设计原则的严重设计缺陷,可能给系统的长期可维护性和可扩展性带来风险。

原作者: Syed Mohammad Kashif, Ruiyin Li, Peng Liang, Amjed Tahir, Qiong Feng, Zengyang Li, Mojtaba Shahin

发布于 2026-04-09✓ Author reviewed
📖 1 分钟阅读☕ 轻松阅读

这是对下方论文的AI生成解释。它不是由作者撰写的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

Each language version is independently generated for its own context, not a direct translation.

这篇论文就像是一份**“AI 厨师”的体检报告**。

想象一下,你雇佣了一位名叫 Cursor 的超级 AI 厨师。它不仅能切菜(写代码片段),现在还能根据你给的菜单,独立做出一桌完整的宴席(生成整个大型软件项目)。

研究人员想知道:这位 AI 厨师真的能做大餐吗?它做出来的菜,除了能吃饱(功能正确),味道和摆盘(设计质量)怎么样?

为了回答这个问题,研究人员给 Cursor 下了 10 道复杂的“大菜”订单(比如做一个社交 APP、一个电商网站、一个学习工具等),并发明了一套**“人类主厨指导法”**(FD-HITL 框架)来指挥它。这套方法不是让 AI 瞎忙,而是像人类主厨一样,先定菜单、再分步骤、最后检查每一道菜。

以下是这篇论文的通俗解读:

1. 实验结果:AI 能做大餐,但“卖相”有待改进

  • 功能很强大(能吃饱):
    在人类的指导下,Cursor 成功做出了 10 个大型项目。这些项目平均有 1.7 万行代码,包含 114 个文件

    • 比喻: 就像 AI 厨师真的端上了 10 桌满汉全席,而且客人(用户)尝了之后发现,91% 的菜都能吃,味道也对(功能正确)。
    • 结论: AI 确实有能力生成大型软件,不再是只能写几行代码的小工具了。
  • 设计有隐患(摆盘乱、食材浪费):
    虽然菜能吃,但研究人员用两台“专业质检机器”(CodeScene 和 SonarQube)去检查,发现了一堆设计问题

    • 比喻: 虽然菜熟了,但有的菜里重复放了三次盐(代码重复),有的盘子太大装不下(方法太长),有的切菜手法太乱(逻辑太复杂),还有的没给过敏的人留提示(无障碍问题)。

2. 发现了哪些“厨房事故”?(主要设计问题)

研究人员把这些问题分成了几类,就像厨房里的常见事故:

  1. 重复劳动(代码重复):

    • 现象: AI 为了省事,把同样的代码复制粘贴了好多遍。
    • 比喻: 就像厨师为了做 10 份炒饭,把“加盐、加葱、加蛋”的步骤写了 10 遍,而不是写一个通用的“炒饭公式”。以后想改盐量,得改 10 个地方,累死人。
    • 违反原则: “不要重复自己”(DRY)。
  2. 贪大求全(方法太长/太复杂):

    • 现象: 一个函数(方法)里塞了太多功能,代码长达几百行。
    • 比喻: 就像让一个厨师同时负责切菜、炒菜、摆盘、洗碗和收银。结果就是,这道菜做得慢,而且一旦收银出错,整个厨房都乱套了。
    • 违反原则: “单一职责原则”(SRP)——一个厨师只该专注做一件事。
  3. 逻辑迷宫(代码复杂):

    • 现象: 代码里充满了层层嵌套的“如果...那么...",像迷宫一样。
    • 比喻: 就像菜谱上写着:“如果客人是左撇子且今天下雨且心情不好,就加糖;否则如果...否则..."。这种菜谱,换个人根本看不懂,稍微改一下就容易出错。
    • 违反原则: “保持简单”(KISS)。
  4. 框架违规(不守规矩):

    • 现象: AI 用的技术(比如 React 或 Spring Boot)有特定的最佳实践,但 AI 经常忽略。
    • 比喻: 就像在法式餐厅里用中式炒锅的规矩来炒菜,虽然能熟,但行家里手一看就觉得“不地道”,以后维护起来很麻烦。
  5. 忽视特殊人群(无障碍问题):

    • 现象: 界面设计没考虑到视障人士或键盘操作者。
    • 比喻: 餐厅装修得很漂亮,但没有给坐轮椅的人留通道,或者盲文菜单没写清楚

3. 为什么会出现这些问题?

研究发现,如果让 AI 像“发疯”一样(Vibe Coding,即不加思考地快速生成),它很容易写出垃圾代码。

成功的秘诀是“人类主厨指导法”(FD-HITL):

  • 不要一口吃成胖子: 不要直接说“给我做一个淘宝”,而是要把任务拆解成“先做登录”、“再做商品列表”、“最后做支付”。
  • 步步为营: 每做完一个小功能,人类就要检查一遍,确认没问题了,再让 AI 做下一个。
  • 比喻: 就像教小孩搭积木,你不能说“搭个城堡”,而是要说“先搭地基,再搭第一层墙”。人类负责规划检查,AI 负责执行具体的砌砖工作。

4. 给普通开发者的建议(避坑指南)

这篇论文给那些想用 AI 写代码的人提了几个醒:

  1. 别只盯着“能不能跑”: 代码能跑通只是第一步,代码好不好维护更重要。AI 生成的代码往往“能跑但很难改”。
  2. 人类必须当“总指挥”: 不要完全甩手给 AI。人类要花更多时间在前期设计需求拆解上,把具体的代码生成交给 AI。
  3. 先后端,后前端: 先让 AI 把数据库和后台逻辑跑通,再让它做界面。这样如果逻辑错了,不会把界面搞得一团糟。
  4. 每步都要检查: 每生成一个功能,就人工测试一下,发现问题马上让 AI 改,不要等最后再一起修。

总结

AI 厨师(Cursor)现在是个非常厉害的“执行者”,能帮你快速做出大菜。
但是,它还不是一个完美的“主厨”。 它做出来的菜,如果没人盯着,可能会盐放多了、摆盘乱了、或者没考虑过敏源。

结论: AI 可以极大地提高开发速度,但它不能替代人类工程师的设计思维质量把控。未来的软件开发模式应该是:人类负责“想”和“管”,AI 负责“做”和“写”。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →