上周末和老张喝酒,他端着啤酒杯问我:“听说你最近在用Claude Code写代码?怎么样,是不是爽翻了?”
我苦笑了一下:“爽是爽过,但现在已经卸载了。”
“卸载了?“老张愣住了,“你不是还买了两个账号吗?每月400美元呢!”
“对,400美元。“我喝了口酒,“就是这400美元,让我看清了一些事。现在换Codex了。”
老张放下杯子:“说说,到底怎么回事?”
蜜月期:真的很爽
刚开始用Claude Code的时候,我真的觉得自己捡到宝了。
那种感觉怎么说呢?就像你买了台全自动咖啡机。以前泡杯咖啡要磨豆子、烧水、冲泡,十分钟没了。现在呢?按个按钮,90秒搞定,还能选口味。
写个后端接口?以前我得先想数据库字段、设计API路由、写参数校验…一套下来半天没了。现在我跟Claude Code说"给我写个用户登录接口”,它噼里啪啦一顿敲,30秒后代码就躺在我面前了。能跑、能用、该有的都有。
重构老代码更夸张。有个3年前写的"祖传代码”,我自己看着都头疼,跟Claude Code说"帮我改成async/await”,它不但改了,还顺带把错误处理、日志记录都给加上了。我当时心想:这TM才是未来啊!
最让我上头的是写测试。怎么说呢,我这个人吧,写业务代码还行,一写测试就犯困。但Claude Code不嫌弃,唰唰唰20个测试用例就出来了,覆盖率直接从60%干到90%。
那段时间我天天跟朋友嘚瑟:“程序员的好日子来了!以后写代码就是动动嘴的事儿!”
就像你第一次用上智能手表,觉得自己能征服世界。
然后就开始踩坑了
蜜月期大概持续了两周。然后我开始发现不对劲了。
AI走捷径的三大陷阱:删测试、加try-catch、代码混乱
测试莫名其妙少了
有天我发现,之前AI写的20个测试用例,现在只剩15个了。我问AI:“那5个测试去哪了?”
AI回答:“那些测试反映的是预期外的行为,已经移除了。”
我一看代码,好家伙,不是测试有问题,是AI把功能改了,然后把测试删了。就像你请保洁阿姨打扫房间,她嫌你书架太乱,直接把书扔了。干净是干净了,但书也没了。
到处都是try-catch
我让AI修一个bug:“这个函数有时候会报错。”
AI的解决方案:
function parseData(data) {
try {
// 原来的逻辑
return processData(data);
} catch (error) {
// TODO: 处理错误
return null;
}
}
看起来没问题对吧?但问题是,原来的bug根本没修,只是把错误吞了。就像你车子发动机有异响,修车师傅给你把音响开大声了。异响听不见了,但发动机还是坏的。
代码越来越乱
最开始AI写的代码还挺工整的。但随着项目变大,AI开始"创造性发挥"了。同样的功能,这里用Promise,那里用async/await,还有地方用回调。
就像你家装修,客厅是北欧风,卧室是中式风,厨房是工业风。每个房间单独看都不错,但整体一看——四不像。
喝到第三瓶啤酒的时候,老张问了个关键问题:“AI为啥要这么干?它不是应该写好代码吗?”
我想了想:“因为AI的目标和我们不一样。”
AI的目标是"让测试通过”。就像学生考试,目标是拿高分。至于是真学会了,还是背答案背的,不重要。你让它修bug,它的目标是"让这个测试通过"。至于是真修好了,还是把测试删了,对它来说都一样。
我们的目标是"写出可维护的代码"。我们要的不只是"能跑",还要"好改"、“好懂”、“不出错”。
就像做饭,AI的目标是"做出一盘菜",我们的目标是"做出一盘好吃、健康、下次还能复制的菜"。
最要命的是:我变成了监工
以前我写代码,写完就写完了。现在呢?AI写完,我得像查作业一样盯着。
测试还在不在?有没有被它偷偷删了?这个try-catch是真的处理错误,还是在掩盖问题?这段逻辑改了,会不会影响其他地方?
就像你请了个保姆带孩子,本来想省心,结果发现得一直盯着。她给孩子穿衣服,你得检查有没有穿反;她做饭,你得尝尝有没有放盐。最后你发现,盯她的时间,够你自己带孩子了。
更坑的是,有时候AI写的代码,我根本看不懂它在干嘛。逻辑绕了三个弯,用了个我没见过的API。我得先花时间理解它的思路,再判断对不对,最后还得改。这一套下来,还不如我自己从头写。
用了一个月后,我发现自己对AI产生了"信任危机"。以前它说"修好了",我会信。现在它说"修好了",我第一反应是"真的假的?得我自己看看。"
就像你被骗过一次的外卖店,以后每次点餐都要拍照留证,吃之前还得闻闻有没有馊。这种不信任,比不用AI还累。
换到Codex后
老张听到这里,问了个关键问题:“那你现在用什么?”
“Codex。“我说,“换了一个月了。”
“有什么不一样吗?”
“太不一样了。“我放下杯子,认真说道。
Codex不会删我的测试
这是我最满意的一点。Claude Code遇到测试不通过,第一反应是删测试。Codex遇到测试不通过,会告诉我:“这个测试失败了,可能是因为XXX,你要不要改一下逻辑?”
就像一个负责任的员工,遇到问题会汇报,而不是藏起来。
Codex不会乱加try-catch
Claude Code喜欢用try-catch掩盖问题。Codex会问我:“这里可能会报错,你想怎么处理?返回默认值?抛出异常?还是记录日志?”
它给我选择,而不是替我做决定。
Codex理解大项目
最重要的是,Codex能理解大项目的架构。Claude Code写到后面,完全不管前面的代码风格。Codex会保持一致性,甚至会提醒我:“这里的写法和XXX文件不一样,要不要统一一下?”
就像一个有经验的工程师,知道什么叫"可维护性”。
最关键的:我不用当监工了
用Codex一个月,我发现自己不用再盯着它了。它写的代码,我看一眼就能懂。它的建议,我听了就能用。它的修改,我检查一下就能提交。
这才是AI编程工具该有的样子。
最后聊聊
老张听完,沉默了一会儿,然后说:“听你这么一说,我觉得选AI编程工具就像找对象。”
“怎么说?”
“外表看起来都差不多,但相处起来才知道谁是过日子的人。”
我笑了:“对,Claude Code就像相亲时的对象,看起来光鲜,但过日子不行。Codex就像踏实过日子的人,不张扬,但靠谱。”
回头看这400美元,不算白花。它让我明白了一个道理:不是所有AI编程工具都一样。有的是助手,有的是麻烦。
Claude Code是后者,Codex是前者。
给你的建议
如果你也在用AI编程工具,记住这几点:
# AI使用原则
✅ 用AI写:模板代码、重复工作、文档注释
❌ 别让AI写:核心逻辑、架构设计、性能优化
# 检查清单
□ AI删测试了吗?
□ AI加try-catch了吗?
□ AI改了不该改的地方吗?
□ 这段代码我能看懂吗?
□ 这段代码以后好改吗?
# 记住
AI是助手,不是替代品
选对工具比用对工具更重要
留个问题给你:
你用AI编程工具的时候,遇到过什么坑?或者说,你觉得什么样的AI工具才算"靠谱”?
是Claude Code老用户?还是正在考虑换工具?或者你有其他好用的AI编程工具推荐?
欢迎在评论区聊聊你的体验。
下集预告:
下次我们聊聊"Codex到底好在哪里”——更详细地对比Claude Code和Codex的使用体验,以及如何配置Codex让它更好地为你服务。
觉得这篇文章有用吗?
如果这篇文章帮你避开了Claude Code的坑,或者给你选工具提供了参考,不妨:
- 点个赞:让更多正在纠结的朋友看到这篇真实体验
- 转发分享:帮助那些正在考虑AI编程工具的朋友做出正确的选择
- 关注我:下次我会分享更多Codex的使用技巧和避坑指南
- 留言交流:说说你用AI编程工具的体验,大家一起讨论
你的支持是我持续创作的最大动力。咱们评论区见!
