AI编程之我见

作为一名常年和代码打交道的全栈开发,最近这一年,最明显的感受就是:AI 已经彻底走进了编程的日常,不再是当初那个“听起来很厉害、用起来很鸡肋”的噱头了。今天就以我自己的使用经历,跟大家聊聊 AI 编程那些事儿,轻松唠唠,不聊复杂理论,只说真实体验。

先说说现状吧。现在 AI 编程工具真的是百花齐放,不用再像几年前那样,翻来覆去就那几款凑合用的工具。最常用的应该就是 Cursor 了,主打一个轻量、精准,专门针对代码场景优化,不像有些通用 AI 工具,写代码还要反复调试提示词;还有 GitHub Copilot,适合和 IDE 深度绑定,比如 VS Code 里装个插件,写代码的时候自动联想补全,有时候甚至能猜到你下一行要写什么;另外像 CodeGeeX、通义千问代码版,也各有侧重,有的擅长多语言适配,有的在国内网络环境下更流畅,总之选择很多,总能找到一款适合自己的。

我真正开始深度用 AI 编程,是源于我个人的全栈项目——luban。熟悉我的朋友知道,这个项目我一个人扛了大部分开发,涉及好几个子系统,前端要用 Vue3 + Nuxt3,后端要写 SpringBoot,偶尔还要用 Node.js 写个 BFF 层,甚至有时候要补点 golang 脚本处理数据,多种语言来回切换,有时候写着写着就卡壳,尤其是一些不常用的语法,还要翻文档、查博客,特别耽误时间。

最开始是抱着试试看的心态,下载了 Cursor,本来只是想用来补补语法、调试个小 bug,结果用了不到半天,就果断开通了 Cursor Pro。说实话,一开始没抱太大期望,毕竟之前也用过不少 AI 工具,要么答非所问,要么代码报错,但 Cursor 给我的感觉完全不一样——我只要把需求说清楚,比如“用 SpringBoot 写一个站点列表查询接口,带分页和条件筛选,关联用户表”,它就能直接生成可运行的代码,甚至连异常处理、参数校验都帮我写好了,省去了大量重复编码的时间。

聊到效果,用“惊人”来形容一点都不夸张。以前我写一个完整的后端接口,从定义实体类、Mapper、Service 到 Controller,再到调试通过,至少要半个小时,现在用 Cursor,10 分钟就能搞定,而且代码结构很规范,不用我再手动调整格式。尤其是写前端组件,有时候我只需要描述“写一个 Vue3 的表单组件,包含输入框、下拉框,带表单校验,提交按钮禁用逻辑”,它就能生成完整的代码,我只需要根据项目的样式规范,微调一下类名和样式,就能直接复用。

效率提升最明显的,还是多语言切换的时候。比如我刚写完 Java 代码,突然要写 Node.js 的 Egg.js 接口,语法细节很容易记混,这时候只要让 Cursor 帮我生成一个基础模板,再根据我的需求修改,就能快速上手,不用再去翻 Egg.js 的官方文档,节省了大量的时间成本。可以说,自从用了 AI 编程,我这个“单兵作战”的全栈项目,进度至少提速了 40%。

当然,AI 编程也不是完美的,它的问题也很突出,最常见的就是两个:一是容易出现“幻觉”,二是代码质量参差不齐。所谓的幻觉,就是 AI 会编造一些不存在的 API、方法,或者引用一些不存在的依赖,比如我让它写一个 Redis 缓存的工具类,它居然生成了一个不存在的 Redis 方法,我复制过去直接报错,一开始没注意,排查了半天才发现是 AI 编的;还有代码质量,有时候它生成的代码虽然能运行,但不够优雅,比如重复代码太多、没有做优化,甚至有潜在的性能问题。

不过这些问题,也不是不能解决,我总结了几个自己常用的方法,亲测有效。第一个是借助 Claude.md,把项目的技术规范、常用工具类、接口契约都整理进去,让 AI 先“学习”我的项目规范,再生成代码,这样就能大大减少幻觉和代码不规范的问题;第二个是多做二次校验,AI 生成的代码不要直接复制粘贴就用,一定要过一遍,检查有没有语法错误、逻辑漏洞,尤其是涉及到数据库操作、权限校验的代码,必须手动复核;第三个是精准提示,不要给模糊的需求,比如不要说“写一个登录接口”,而是要说“用 SpringBoot 写一个登录接口,接收用户名和密码,密码用 BCrypt 校验,返回 JWT 令牌,包含用户角色信息,处理用户名不存在、密码错误的异常”,提示越精准,生成的代码质量越高;第四个是积累自己的提示词模板,把常用的需求场景(比如写分页接口、前端表单组件)的提示词保存下来,下次用的时候直接修改,既节省时间,又能保证效果。

说到这里,跟大家分享几个我日常用 AI 编程的小技巧,都是实打实能用得上的,尤其适合全栈开发的朋友。

第一个技巧,善用“上下文关联”。比如我用 Cursor 写后端接口的时候,先把实体类代码粘贴给它,再让它写 Service 和 Controller,这样它就能准确关联实体类的字段,不会出现字段名错误的问题;写前端组件的时候,也是一样,先粘贴相关的组件依赖、样式规范,再提需求,生成的代码更贴合项目实际。

第二个技巧,让 AI 帮你“调试报错”。有时候遇到一个奇怪的报错,自己排查半天找不到原因,这时候把报错信息、相关的代码片段粘贴给 AI,让它帮你分析原因,甚至生成修改方案,比自己翻博客、查 Stack Overflow 快多了。我之前遇到一个 Vue3 的响应式数据异常,排查了半个多小时没找到问题,让 Cursor 一看,立马就指出了是我误用了 ref 和 reactive 的区别,修改后立马就好了。

第三个技巧,用 AI 帮你“重构代码”。有时候接手别人的旧代码,或者自己以前写的烂代码,重构起来很麻烦,这时候可以让 AI 帮你优化,比如提取重复代码、简化逻辑、规范命名,它能快速帮你把代码变得更优雅,节省大量重构时间。

第四个技巧,不要过度依赖 AI。AI 是辅助工具,不是替代我们的,对于核心逻辑、复杂业务场景,还是要自己动手写,AI 可以帮你写重复代码、补全语法,但核心的业务逻辑、架构设计,还是需要我们自己把控,不然很容易出现逻辑漏洞,后期维护起来会更麻烦。

最后,说说我的结论吧。用过这么久 AI 编程,我越来越坚信,AI 编程绝对是未来的趋势,它不是要取代程序员,而是要解放程序员的双手,让我们从繁琐的重复编码中解脱出来,把更多的精力放在核心业务、架构设计、问题解决上。

以前我们要花大量时间记语法、写重复代码,现在有了 AI,这些工作都可以交给 AI 来做,我们只需要专注于“做什么”,而不是“怎么写”。当然,AI 还有很多需要完善的地方,比如幻觉问题、代码质量问题,但随着技术的发展,这些问题一定会慢慢得到解决。

对于程序员来说,与其抗拒 AI,不如主动拥抱它,学会利用 AI 提升自己的效率,把省下来的时间用来学习新的技术、提升自己的核心竞争力。毕竟,未来的程序员,不是比谁写代码更快,而是比谁能更好地利用工具、解决更复杂的问题——而 AI,就是我们最得力的助手。

0%