前天晚上冒项目,临时要改一套老代码的API接口。据说是半年前同事写的,里面十几个接口的返回格式都不统一,看得我头皮发麻。换以前我肯定得一行行看,一行行改,没两个小时搞不定。结果这次我把Cursor一打开,跟它说了句”把这些接口返回格式统一成JSON,顺便把错误处理也补上”,五分钟,它全搞定了。我坐在电脑前面发呆,心想这事儿上周不是耗了我一下午吗。
说实话,我之前是挺抵触AI编程这事的。十年前开始写代码的时候,那时候连VS Code都还没出来,大家都用Notepad++和Sublime Text,调试靠alert和console.log,不也过来了。后来VS Code开始流行,我换过去的时候还有点不情愿,觉得Sublime启动快、占用少。结果用了两年VS Code之后才发现,真香。
这次Cursor也是。是我一帮小伙伴在微信群里天天吹,我才试着下载的。刚开始的两天,我还是按照以前的习惯在写,AI那个聊天框基本上都没怎么用。直到有一次周末在家里,老婆出去跟闺蜜唱K,我一个人抱着电脑在沙发上看一套前端组件。那个组件是用React写的,但里面混了一些老项目的jQuery代码,看得我眯着眼睛都不知道从哪下手。我就随手把整个文件拖到Cursor的聊天框,跟它说了下我的困扰。
结果它不光给我分析了哪几个地方有问题,还直接给我重构了一版纯React的代码,顺便把我没写完的单元测试也补上了。我那时候穿着睡衣躺在沙发上,看着它一行行输出,跟看魔术似的。之前我也用过Copilot,但Copilot那种填空式的帮助跟Cursor完全不是一个级别。Copilot是你写一半它给你补,Cursor是你告诉它要干什么,它直接给你干完。
我现在的工作流变了不少
以前写功能,先在脑子里打稿,然后一行行码,遇到不会的就去Google或者Stack Overflow翻。现在不一样了,我更像是一个检查员。把需求跟Cursor说清楚,它生成之后我再逐行看,看哪里不对劲、哪里逻辑有漏洞。
有人说这样下去程序员不就废了吗?我觉得没那么糟糕。就像自动驾驶不会让司机失业,只是司机的工作内容变了。以前我们花八成时间写代码,两成时间想架构。现在反过来了,想架构和审查占了大头,写代码变成了机械活。但是这个“想”的部分其实更重要,因为架构想不清楚,AI写出来的代码就像没有地基的楼,看着像么回事,一上生产环境就塌。
也不是说它就完美无缺
上周有个事就坑了我。我让它写一个处理时区转换的函数,它写完之后我测了几条数据都没问题,就直接提交了。结果到了生产环境,夏令时间都差了一个小时,被用户投诉到老板那儿去了。原因是它在处理夏令时区切换的时候漏了一个边界条件,那个时间段恰好在切换的那几天,所以测试数据没触发。这事给我提了个醒,AI写的代码可以省事,但审查的门槛不能降,该写的测试用例还得写,该走的代码审查还得走。
还有一点就是,Cursor对特别复杂的业务逻辑依然有点受力。比如我们有个老项目里有一套自己封装的数据渠道逻辑,涉及到好几个服务之间的异步通信和状态机。这个业务模型太复杂,Cursor理解起来就比较吃力。这种情况下,我还是得自己先把边角情况理清楚,然后把大任务拆成小任务给它做,否则它容易在那自己编出一些看似对但实际有问题的方案。
三个月后的真实感受
现在我的日常开发里,大约有三成的代码是我自己手打的,七成都是AI辅助生成。但这三成手打的代码其实很关键,是整个业务的骨架。剩下的七成杂活,模板、样式、工具函数、单元测试之类的,基本都交给AI完成。
我也尝试过同时用好几个AI工具,最后留下来的就两个:Cursor写代码,Perplexity查资料。之前还用ChatGPT,但现在Claude的代码能力确实更强,Cursor内部又是接的Claude,所以我就没怎么单独开ChatGPT了。偶尔用一下谷歌搜索,但发现最近搜索结果前面几页全是广告和SEO垃圾,不如直接问AI来得快。
有一说一,Cursor的订阅费不便宜,一个月二十几块美刀。但我算了笔账,以前一个小功能要花半天写,现在一两个小时搞定,省下来的时间完全值得这个价格。不过免费版也可以用,只是次数受限制,想尝鲜的先用免费版试试也可以。
今天下午点了杯拿铁,正好跟团队里的小伙伴聊到AI编程的事。有个同学说他试了一下Cursor之后又换回VS Code了,觉得AI干预太多,不在自己的控制中。我也不知道该说什么,可能每个人习惯不一样吧。但对我来说,这三个月用下来,工作的舒适度确实提高了。以前每天下班时候脑袋都是昏的,现在还能有点精力去搏两把LOL。反正工具就是工具,能提高效率的就是好工具,自己用着顺手最重要。