最近在技术圈里看到一个很有意思的争论:AI写出来的系统到底能不能用?

有些朋友直言不讳,说 AI 生成的代码全是“屎山”,根本没法维护,看一眼就想吐;但也有一部分开发者(比如我)觉得,现在的 AI 写出来的东西,其实比很多所谓“程序员”写的要好,甚至更符合科班出身的结构和逻辑。

为什么会有这么割裂的看法?今天咱们不谈虚的,就从实际干活的角度,把这个事儿揉碎了讲讲。

一、 为什么有人觉得 AI 写的是“屎山”?

批评的声音主要集中在“可维护性”上。这确实是个大坑,原因通常有以下几点:

  1. 上下文丢失魔咒 AI 不是人,它没有对你整个项目的永久记忆。如果你是一段一段地让它生成代码,它大概率不知道你在 utils.js 里已经写过一个 formatDate 函数了,于是它会在新文件里自信满满地再生成一个。这种重复代码多了,系统自然就臃肿了,改一个 bug 要改三五个地方,这能不是“屎山”吗?

  2. “幻觉”带来的隐形 BUG 也就是大家常说的胡说八道。AI 有时会自信地使用一个根本不存在的库函数,或者引用了错误的参数。如果你是新手,直接 Copy 进去跑,看起来不出错(或者报错不明显),但上线高并发一压,直接崩。

  3. 过度设计的“最佳实践” AI 是用海量开源代码训练的,它倾向于把所有“高大上”的设计模式都用上。有时候你只是想写个简单的脚本,它给你整出一套工厂模式+观察者模式。虽然逻辑是对的,但对于接手的人来说,为了读这段简单逻辑得绕十八个弯,维护成本极高。

二、 为什么我说 AI 写的比很多程序员好?

这听起来像是在拉踩,但咱们客观分析一下。为什么我觉得 AI 产出的代码反而更靠谱?

  1. 严格遵守规范,没有个人癖好 很多初级程序员写代码带有强烈的“个人风格”:变量名 a, b, c,大括号换行不统一,逻辑跳来跳去。而 AI 你只要 Prompt 下达明确(比如“请遵循 Airbnb JS 规范”),它生成的代码格式几乎永远是完美的,命名清晰,注释得当。

  2. 逻辑覆盖面更广 经验不足的开发者容易只考虑“正常流程”,而忘记边界条件、空值处理、异常捕获。AI 吃过的代码比你吃过的米都多,它往往会主动加上防御性编程的代码,比如判空、默认值设置等。这使得系统在健壮性上往往超过人类新手。

  3. 基础架构的“地基”打得稳 在搭建标准 CRUD 系统、API 接口定义、数据模型设计这些模块化的工作上,AI 表现极好。它知道标准的 Restful API 长啥样,知道数据库范式。这些是科班教育的重点,也是很多野路子程序员容易忽视的。

三、 真相是什么?

其实,AI 不是一个能独立完成大型系统的架构师,它是一个手速极快、记忆力有限的超级实习生。

骂它是“屎山”的人,往往把它当成了全能保姆,完全甩手不管;

夸它好用的人,其实是把它当成了最强辅助

四、 实战建议:如何榨干 AI 的生产力而不踩坑?

如果你想利用 AI 写出高质量的系统,而不是一堆不可维护的代码,请务必遵循以下原则:

  1. 你必须是架构师 在敲代码前,先由你来设计目录结构、定义核心变量、划分模块边界。然后让 AI 去填充具体的函数实现。不要让 AI 决定你的系统结构,只让它写具体的砖块。

  2. 提供精准的 Context(上下文) 不要只问“帮我写个登录功能”。要说:“我有两个文件 A 和 B,现在的逻辑是...,请帮我修改文件 A 增加...的功能,代码风格要和文件 B 保持一致。” 现在的 AI 工具(如 Cursor, Copilot Workspace)都支持引用整个项目,利用好这些功能。

  3. 做 Code Review 而不是 Copy-Paste 哪怕 AI 写得再好,你也必须逐行阅读。你要检查的是逻辑是否符合业务需求,而不是检查它语法对不对。永远不要运行你没读过的 AI 代码。

  4. 补全单元测试 既然怀疑代码有 BUG,就让 AI 自己写单元测试。让 AI 攻击 AI,往往能发现很多隐藏的逻辑漏洞。

写在最后

AI 写出来的系统能用吗?绝对能用。

但它是不是“屎山”?取决于那个在键盘前敲 Prompt 指挥它的人。

技术工具本无过错,关键在于你是那个被工具带着走的“操作员”,还是驾驭工具的“工程师”。大家怎么看?欢迎在评论区聊聊你用 AI 开发遇到的坑或者神操作。

标签: none

AI Skills Smart Station on Nick Launches

评论已关闭