你有没有发现一个奇怪的现象?
用 Cursor 或 Claude Code 写代码的时候,写得越"规范"的项目,AI 改起来越费劲。
那些教科书式的分层架构、精心设计的继承体系、高度抽象的泛型工具类——人类看了点头称赞,AI 看了一脸懵逼。
说人话:AI 的"眼睛"和人的不一样。人看代码靠经验脑补,AI 看代码靠上下文窗口。你的代码散落在 20 个文件里,它就需要读 20 个文件才能动手改。
这篇文章要说的事很简单:2026 年了,代码的评判标准该变了。
先说结论
这篇文章会告诉你三件事:
- 为什么传统的"好代码"标准正在失效(第一节)
- 面向 AI Agent 编程的 6 个具体改造方案(第二节)
- 未来开发工作流会变成什么样(第三节)
如果你只有 30 秒,记住这句话:"上下文局部性"和"显式约束"正在取代"DRY"和"高度抽象",成为新的代码黄金法则。如果你想知道为什么,往下看。
一、传统的"好代码",正在成为 AI 的绊脚石
我们从大学开始就被教育:不要重复自己(DRY)、面向接口编程、分层架构、高度抽象。
这套标准在人类手写代码的时代,完全正确。因为人写代码慢,重复代码意味着维护成本翻倍。
但 AI 不一样。
AI 生成代码极快,重复 10 行代码对它来说是零成本。反过来,你精心抽取的 BaseService<T>,它需要跳 3 个文件才能理解 super.doSomething() 到底干了什么——每一次跳转都在消耗它有限的上下文窗口。
核心矛盾来了:
二、面向 AI Agent 的 6 个改造方案
以 Java Spring Boot 为例,具体怎么改。
1. 架构:从"横向分层"到"垂直切片"
传统 Spring Boot 项目长这样:
改一个"用户注册"功能,你要动 4 个文件夹。AI 需要把 4 个目录的文件全读一遍才能开工。
改成这样:
当你跟 Cursor 说"修改用户注册逻辑"时,AI 只需要加载 features/user/register/ 这一个包,上下文精准,幻觉率大幅降低。
2. 代码风格:宁可冗余,不要跳转
人类搞 BaseController、复杂的泛型继承,是为了少写代码。
但 AI 看到 super.doSomething() 时,必须去读父类文件。这增加了 Token 消耗和理解难度。
改法:
- 去继承化少用继承,多用组合。哪怕代码看起来重复,对 AI 来说也是秒生成的,但逻辑的自包含性大大提升。
- DTO 就地定义不要把 DTO 放在全局
model 包,直接放在同一个 Feature 包下,甚至作为内部类。
说人话:让 AI 打开一个文件就能看到所有它需要的东西,而不是满世界找依赖。
3. 接口:没有多态需求就别写 Interface
传统 Java 开发讲究"面向接口编程",哪怕只有一个实现类也要写 Interface。
在 AI 编程时代,这是纯噪音。
AI 跳转定义时,直接到实现类,比先到 Interface 再找实现类高效得多。减少不必要的抽象层级,就是减少 AI 的推理干扰。
这条可能会引起争议。你觉得"只有一个实现类也要写 Interface"这个习惯还有必要吗?评论区站队。
搞定了代码层面的调整,但这只是基本功。
下面三条才是真正拉开差距的地方。
4. 测试即规格说明书
在 AI 编程时代,测试代码的重要性超过了生产代码。因为测试是你告诉 AI"你写对了没有"的唯一契约。
但你不需要自己写测试方法。你只需要在测试类里用自然语言写需求:
工作流变成:你写需求注释 → AI 生成测试方法 → 你确认测试 → AI 写实现并自动验收。
确认测试这一步至关重要——确认测试 = 确认需求。测试写错了,后面的实现一定跟着错。
说人话:测试类不是代码文件,是一份可执行的需求文档。人类只负责"说清楚要什么"和"确认对不对"。
5. 注释变成"提示锚点"
以前注释是解释"这是啥"。现在注释是给 AI 下达的约束指令。
这是在代码里埋"上下文钩子",引导 Agent 注意特定约束,而不是让它自己猜。
6. 减少 Spring 魔法
Spring 的 AOP、复杂注解组合、Bean 条件加载——强大,但属于"运行时行为",静态代码看不出来。
AI 只能做静态分析。它看不到你的切面,也猜不到你的条件装配。
除非是通用横切关注点(日志、鉴权),业务逻辑尽量写在显式的方法调用里。让控制流是线性的,AI 才能追踪。
说人话:别让 AI 去猜"这个方法被谁偷偷拦截了"。它猜不到,就会瞎编。
三、未来的开发工作流
按这套思路走下去,Java Spring Boot 的日常开发可能变成这样:
第一步:人类在 features/order/create/ 下创建 CreateOrderTests.java,用自然语言注释写清楚业务规则。不写任何代码。
第二步:AI 读取注释,生成完整的测试方法。
第三步:人类确认测试——"这些测试是否准确表达了我的意图?"确认通过。
第四步:AI 生成 CreateOrderEndpoint.java、CreateOrderRequest.java、Repository 等所有实现文件,全部放在同一个目录下。
第五步:AI 运行测试,报错就自我修正,直到全部通过。
第六步:人类 Code Review——重点检查逻辑漏洞,不再纠结代码风格。
提交。
这不是幻想。如果你现在用 Cursor 或 Claude Code 写过一阵子代码,你会发现你已经在这么干了——只是项目结构还没跟上。
写在最后
这不是说代码可以写得乱七八糟。
恰恰相反,面向 AI Agent 的代码需要更强的纪律性:显式约束、上下文局部性、清晰的测试契约。只是评判标准从"人读起来舒服"变成了"AI 改起来准确"。
我知道有人会反对——"这不就是退步吗?放弃了几十年软件工程积累的最佳实践?"
不是退步,是适应新的工具链。就像从马车到汽车,道路规则必然要变。DRY 是马车时代的金科玉律。在 AI 写代码比人快 100 倍的时代,上下文局部性才是新的第一性原理。
一个问题留给你:
你现在的项目,是更适合人类阅读,还是更适合 AI 修改?
如果答案是前者,也许是时候想想怎么改了。
你踩过最深的"AI 看不懂我代码"的坑是什么?评论区说出来让大家避雷。
这是「AI 认知」系列文章。关注我,一起探索 AI 时代的编程新范式。