看Claude code写的代码,心凉半截安瑞哥是码农
截止到目前为止,已经 vibe coding 整整 3 个多月了,在这期间,可以拍着我的胸肌跟大家保证:我是真的一行代码都木有亲自写过,也没有用肉眼 review 过。
就硬生生的,跑起了 4 个系统,而且目前来看,运行稳定。
但就在今天早上,我脑子里突然冒出个疑问:让 Claude code 写了那么多代码了,那这货写出来的东西,质量到底行不行?
得,那咱就挑其中一个系统的后端代码,一起来瞅瞅。
0. 选个稍微复杂点的系统
那就选最近建的那个,基于大数据技术的网络攻击行为实时分析系统吧。
这个系统目前为止,已经稳稳运行了近 2 周,
目前来看,风平浪静,啥事没有。
但表面的岁月静好,是不是就代表它真的没有任何其他问题呢?它的后台代码写的怎么样,有没有给我埋雷?我既好奇,又怀疑。
怀着无比激动的心情,我用 idea 打开了它的 Java 后端代码,以及 Flink 任务代码。
结果不看不要紧,看完之后,不能说大失所望,但至少,心是凉了小半截的。
1. 后端不分层
这部分,我让 Claude code 基于 spring-boot 3.x 来实现的。
这里最大的槽点在于:没有按照标准 spring 框架的玩法,对代码根据功能做对应的拆解跟分层。
来,先瞅瞅我之前在古法编程时代, spring-boot 的代码是怎么分层的:
硬是给控出 5 层出来了。
再看现在 Claude code 写的:
2 层搞定,就是这么任性。
难道是我这个项目的这部分代码太简单了,不屑于它分层吗?
我认真看了一下,也不是,里面的处理逻辑跟各种弯弯绕绕其实也不少,但 Claude code 就是选择把这些逻辑 99% 的部分,都给揉到了 controller 里。
在 controller 函数里,直接写业务 SQL,你见过吗?
耦合度这么高的代码,这要是出现在我的团队里,铁定是要被臭骂的,屡教不改的话,搞不好还得走人。
最关键的是,这个系统还是我已经迭代了几次之后的,每一次迭代,Claude code 并没有想着把 controller 里面的数据处理逻辑,给单独提取出来,而是一个劲的往一个方法里面堆。
这么玩,可不就是在给系统悄悄地埋雷吗。
2. Flink 任务没 checkpoint
再打开 Flink 的代码,心又凉一截。
核心的 3 个 Flink 任务,我把所有代码翻了个底掉,愣是一个设置 checkpoint 的地方都没有。
难道是 Claude code 觉得,Flink 读取 Kafka 写 clickhouse 这个流程,不用 checkpoint 也能把数据写进去,所以就懒得加这个步骤了吗?
可是大哥,当前这种 Kafka 的消费方式
万一任务突然挂了,修复之后再次重启的时候,那这个期间上游过来的所有数据,可都会丢了的呀。
莫非,Claude code 觉得我这个项目不太重要,不配拥有数据 failover 的资格?
又一个大雷不是。
3. 代码简洁度不够
这个虽然不是什么致命问题,但在我看来,也算是一种缺点。
虽然我是明确让它用 Scala 来写的 Flink 任务,但整个代码风格在我看来,还是一股浓浓的 Java 味,没有用到我认为更简洁的 Scala style。
当然,还有其他地方的一些小瑕疵,这里就不提了。
vibe coding 时代,用 AI agent 写代码确实厉害,又快又能达到基本目的,所以会让你很容易忽视掉它的质量。
这种短时间内靠 token 烧出来的代码,快速跑个 demo、捏个原型系统确实没有任何问题。
但你要指望它上生产,经受住大量真实使用方式的蹂躏,在当下,恐怕还得要专业的人,在 review 上多下些功夫。
否则啊,前期埋下的各种不知名的雷,指不定什么时候就响了,你觉得呢?


