这两年AI编程工具火到什么程度?打开任何技术社区,讨论度最高的基本都绕不开几个名字:GitHub Copilot、Cursor、通义灵码、CodeGeeX、Codeium……对于已经上车的人来说,纠结的是“哪个更好用”;对于还没上车的人来说,最大的困惑往往不是“要不要用”,而是“到底选哪个、怎么用才不踩坑”。选错工具浪费时间,用错姿势同样浪费时间,而时间恰恰是写代码最贵的成本。这篇文章我就根据自己的实操经验,把“AI编程工具的选择与使用”这套完整方法论拆给你,从选型维度、工具对比、接入步骤到实战演示和避坑技巧,一次性讲透。
这篇文章适合谁?纯新手可以先看第2、3节搞清楚怎么选,已经在用但效率不高的同学可以直接跳到第4、5节看实操和案例,喜欢自己折腾工具链的务必看第6节,那里全是文档里不会写的体感。我尽量用大白话讲,涉及专业术语的地方也会顺手解释清楚,保证你看完能直接照着做。
1. 为什么“选择工具”这件事比很多人想的更值得花时间
先说个扎心的现象:不少人装了个AI编程插件,试用了一下午就得出“不过如此”的结论,然后卸载、回归手写。但根据我观察,70%的情况下不是工具不行,而是选错了工具、用错了场景。
AI编程工具看起来都是“给你补代码”,但实际形态差异非常大。有的擅长在IDE里做行级补全,你写一个方法名它给你补方法体;有的擅长跨文件重构,你让它改一个接口它能把所有调用方一起改了;还有的干脆就是独立编辑器,把AI能力直接焊死在编辑器底层。这些工具的设计哲学完全不同,不是“装哪个都差不多”的关系。
拿前端和Java后端来举例。前端项目文件多、依赖乱、类型定义分散,一个好的AI工具如果能把组件A的props和组件B的引用串起来理解,补全质量会高一大截。Java后端则完全是另一套逻辑,方法签名长、注解多、老项目里动不动就是几千行的大类,工具能不能读懂Spring的依赖注入、能不能理解MyBatis的Mapper套路,直接决定它是“助手”还是“打字机”。
所以“选择”不是看谁的广告打得多,而是先搞清楚你自己的项目长什么样、你平时的开发痛点在哪。工具没有绝对的好坏,只有适不适合。这一节我先把思路理清楚,后面几节再给你具体的方法论和工具清单。
2. 选一个称手的AI编程工具,先看这6个维度
2.1 补全质量与上下文理解
补全质量是核心,但“质量”这个词太虚。我自己的判断标准是:一个工具是只盯着你当前光标所在的那一行,还是能顺着整个文件的逻辑往下推。
低质量的补全经常给人一种“人工智障”的感觉——你写了一个getUserById方法调用的前半段,它给你补出的参数要么是null要么是写死的字符串,等于没补。高质量的补全则会在方法名刚打出来的时候,就根据当前类里已经存在的字段、方法、依赖,生成符合业务语义的代码。
具体怎么测?别去看厂商给的Demo视频,自己找个正在开发中的项目,挑一个你最近写过的不太简单的功能,删掉其中一段核心逻辑,看看工具能补到什么程度。能补出七成以上且有正确业务含义的,算及格;只会把语法补全的,直接淘汰。
2.2 多文件/仓库级别的理解能力
这也是很多人忽略的点。AI补全看你当前文件的内容是最基础的,但现在越来越多的场景需要跨文件能力:改一个接口的返回结构、把某个公共类里的字段改名、在两个模块之间新增一个调用链。
想象一个场景:你在前端项目里改了一个请求函数的入参,后端那个接口已经变了,你希望AI能在你打开调用方文件时主动提示“这个函数签名已经和API不一致了”,甚至直接帮你调整参数。目前能做到这一步的工具不多,但趋势已经很明显。
如果你的项目是单仓库多模块结构,或者经常涉及前端后端一起改,那么至少要选一个支持把“相关文件”一起塞给AI的工具。现在主流的做法是靠编辑器打开的标签页、项目索引或者显式添加上下文来扩大AI的视野,这些细节决定了工具在大型项目里是拖后腿还是帮大忙。
2.3 对Java技术栈的适配程度
既然热搜词里有“java ai编程工具推荐”,我必须把Java这个场景单独拿出来说。Java项目和Python/JS类型项目有个显著差异:大量逻辑靠框架约定而非显式代码。一个只有注解没有方法体的Spring Boot接口,一个靠MyBatis XML驱动数据查询的Mapper,一个从application.yml里读取配置的组件,在AI眼里都是“上下文黑洞”。
实测下来,针对Java适配做得好的工具,通常具备三个特点:第一,对Spring全家桶的注解语义有专门优化,比如@Autowired、@RequestMapping、@Transactional不是只被当成普通字符串;第二,能理解Maven/Gradle的依赖关系,你在pom.xml里引入一个库,AI写代码时知道这个库有哪些可用的API;第三,生成代码时会主动套用Java的工程化习惯,比如生成一个Controller时会考虑RESTful风格、返回统一响应体、加参数校验,而不是只返回裸数据。
这一条看起来偏技术,但在实际选择时非常重要。Java开发者买了一个面向Python优化的工具,体感会非常差;反过来,一个对Java生态打磨过的工具,写起业务代码来会顺畅到让人上瘾。
2.4 隐私与合规边界
这个维度很容易被普通开发者无视,但在公司环境里是硬门槛。AI编程工具的工作方式分两种:一种是代码片段上传到云端处理,一种是完全在本地跑模型。云端处理意味着你的代码会经过第三方服务器,这在大厂或者涉及用户数据、商业算法、未发布项目的场景里可能是绝对不可接受的。
如果你是自己做开源项目或者学习,云端服务无所谓;如果在公司里用,建议先问清楚三件事:公司有没有明文规定不能用外部AI编码工具?代码上传之后被存多久?生成的内容版权怎么算?某些工具提供了“企业版”或者“不让代码出网”的模式,代价是能力会打折,但安全合规永远是第一位的。
另外,很多人没意识到:你把代码喂给AI,AI生成的代码可能也“源于”别人的开源项目。如果公司有严格的开源合规要求,对工具的审查也得提上日程。这一条在选型表里必须加进去,否则后面可能要付出远超工具订阅费的代价。
2.5 价格与付费模式
聊钱不寒碜。目前市面上的AI编程工具基本分三档:免费档、付费订阅档、企业定制档。免费档通常有每日请求次数限制,或者只能使用小参数模型,但应对日常补全已经够用;付费档一般按个人版和企业版区分,个人版一个月几十到几百元不等,企业版通常要单独询价。
我自己的建议是:个人开发者先用免费档把流程跑通,确认工具真的能解决你的痛点,再决定要不要付费。不要一上来就买最贵的,贵不等于适合。而且很多工具的付费策略是“免费续杯”式的——流量大、口碑好的免费工具会通过提供API接口给开发者来扩大生态,短时间内不会轻易收费。真正需要你花钱的往往是多模型切换、优先访问新模型、更大上下文窗口这类进阶能力,先搞明白自己是否需要。
2.6 生态与集成方式
最后一个维度是生态。AI编程工具不是孤立存在的,它需要和你的开发环境互相配合。Vim党、VS Code党、IntelliJ IDEA党、Eclipse党,甚至用Android Studio、PyCharm的,不同工具对编辑器的支持力度完全不一样。很多新工具优先做自家配置的插件甚至独立编辑器,老牌工具则几乎覆盖所有主流IDE。
集成方式上,除了补齐代码、自然语言对话,现在越来越多工具支持代码审查、生成测试、解释报错、自动写提交信息。这些功能虽然不如“自动补全”醒目,但用顺了之后提升效率非常明显。选的时候可以顺手看看工具支持哪些扩展能力,这些能力能不能在同一个面板里调用,避免为了不同功能装一堆插件互相打架。
3. 主流AI编程工具的真实体感与横向对比
3.1 IDE内嵌补全型工具:GitHub Copilot和它的对标者们
GitHub Copilot是这类工具的标杆,基于OpenAI模型,和VS Code、JetBrains全家桶集成得都很好。它的强项是行级补全和函数级生成,你写注释它就写代码,你写方法名它就补方法体,在写样板代码、单元测试、正则表达式这类场景下表现很稳定。
但Copilot有个一直被吐槽的问题:它太“小心翼翼”了。新版本虽然有Chat面板,但整体体验偏向“被动响应”,很少主动推断你在跨文件重构时的意图。如果你需要的是那种“我改一个接口,它帮我把所有受影响的文件都改掉”的重度辅助,Copilot会显得不够激进。
国内对标产品里,通义灵码和CodeGeeX是讨论度比较高的。通义灵码对中文写注释生成代码的场景适配很好,后端Java、前端Vue/React都有不错的表现,而且在IntelliJ IDEA里的响应速度非常快。CodeGeeX则背靠智谱AI,之前主打免费,新版本加入了不少联网能力。这类工具和Copilot的核心差距在于:对“非常冷门的框架、非常高阶的API”的理解深度,但日常业务开发问题不大。
3.2 AI原生编辑器:重新定义交互的Cursor
如果说Copilot是给现有IDE加装AI外挂,那Cursor就是直接以AI为第一公民重新设计的编辑器。Cursor基于VS Code的代码库开发,所以界面和快捷键对老VS Code用户来说几乎没有学习成本,但它的底层逻辑完全不同:AI能一次性理解整个工作区,你可以选中一段代码直接让AI重构,也可以选中报错让AI解释,甚至可以让AI跨文件执行一个“任务”而非简单补全。
我在实际使用中的感受是:Cursor对于从零写一个项目、快速搭原型、自己做小工具这类场景,效率碾压传统IDE+插件组合。它更像“带着一个很懂代码的结对程序员在写”,你只需要描述方向,它来铺细节,不满意就继续对话调。
但Cursor也不是没有坑。它的独立编辑器身份让一些重度IDE用户难以接受——比如我用IntelliJ IDEA调Spring Boot项目习惯了,每次切到Cursor都要重新配置JDK、Maven、运行环境,虽然都能配上,但少了一点“无缝感”。此外,Cursor强依赖网络,云端处理为主,离线场景基本废掉。
3.3 对话式编程助手与云端沙箱
除了补全工具和IDE,这两年还冒出一类“对话优先+云端沙箱运行”的工具,典型代表如各种AI编程网页应用,以及一些直接把项目上传到云端、用AI边聊天边改代码的平台。这类工具的好处是零本地依赖、有浏览器就能用,适合带教学性质的场景,比如你不熟悉某个技术栈,想快速在沙箱里跑通一个Demo。
但说实话,它在实际工程里的地位目前比较尴尬:大项目上传麻烦、安全风险高、云端执行环境和本地不一致,经常出现“在云端跑得好好的,拉回本地就报错”的情况。我个人把它定位成“学习辅助工具”而不是“生产力工具”。除非你主要做算法实验、数据分析和短小脚本,否则不要把它当成主力。
3.4 免费工具到底香不香
热搜里“ai免费编程工具”是最大的流量词,说明很多人还是想先白嫖一把。免费工具里我实测过几个,总体结论是:纯补全功能完全够用,但高级功能有限。
以Codeium为例,个人版免费,支持各种主流IDE,补全质量和Copilot接近,某些场景下甚至更快,但它给人印象最深的是“免费额度不限量”。当然,它也提供付费版,但免费版对个人开发者的友好程度在同类里是非常高的。
Fitten Code是另一个以免费为卖点的工具,对中文优化的不错,写Python和Java都有不错的成功率。但它对超大项目的索引速度和精度还有提升空间。
我的建议是:预算敏感期完全可以用免费工具过渡,但一定要有一个心理预期——免费工具背后的模型迭代速度通常落后付费工具,复杂任务的成功率会有差距。当你发现它在关键需求上开始浪费你时间时,就是该付费的时候了。
3.5 一份走心的对比表格
| 工具 | 适用编辑器 | 免费档 | 核心优势 | 明显短板 |
|---|---|---|---|---|
| GitHub Copilot | VS Code/JetBrains等 | 有试用期 | 模型成熟,行级补全稳,生态全 | 跨文件理解偏保守,订阅费用偏高 |
| Cursor | 独立编辑器(基于VS Code) | 有免费额度 | AI原生交互,适合项目级重构和原型开发 | 非主流IDE用户切换成本大,强依赖网络 |
| 通义灵码 | VS Code/JetBrains/其他 | 免费额度充足 | 中文理解好,Java/Spring适配扎实 | 极端冷门场景成功率一般 |
| CodeGeeX | VS Code/JetBrains/其他 | 免费 | 免费额度巨大,插件生态完善 | 在复杂业务逻辑上表现不稳定 |
| Codeium | VS Code/JetBrains/其他 | 免费额度充足 | 响应快,免费版功能完整 | 对大型仓库理解深度有限 |
| Fitten Code | VS Code/JetBrains等 | 免费 | 中文友好,上手快 | 项目索引能力偏弱 |
表格只是参考,不要照单抓药。真正的选型动作应该是:把你最常用的两个IDE装上一到两个候选工具的插件,用真实项目各跑一天,感受一下“写代码被打断的频率”和“生成代码被改掉的频率”,这两个数据比任何评测都有说服力。
4. 从零接入AI编程工具:实操流程与配置细节
4.1 环境准备与安装
选定工具之后,最优先的一步不是立刻用,而是确认版本兼容。以IntelliJ IDEA为例,很多AI插件要求2022.3以上版本,太老的IDE装不上;VS Code则要注意插件市场和网络环境是否顺畅。先把IDE升级到最新稳定版,再在插件市场搜索工具名称安装,这是最稳妥的路径。
装好插件之后,绝大多数工具都需要登录账号。Copilot需要GitHub账号并绑定订阅;通义灵码需要阿里云账号;Cursor需要自己注册账号,免费档直接用邮箱就能开。这一步要注意:某些工具的企业版和个人版账号体系不互通,如果你在公司电脑上登录了个人账号,后续合规上容易出问题,尽量先问清楚公司政策。
安装完成后先别急着写业务代码。我的经验是先用一个非核心的、你完全熟悉的项目做“冒烟测试”:随便找一个类,写几行注释然后回车,看看补全响应是否正常,侧边栏对话是否能用,快捷键是否有冲突。很多插件默认快捷键会和你已有的快捷设置冲突,比如Ctrl+Enter被AI聊天占用,而你以前用它来执行代码,这种冲突要在设置里尽早改掉。
4.2 项目级配置与忽略规则
这一步是很多人会漏掉的,但它非常关键。大项目里经常有不是源码的目录,比如node_modules、target、build、dist、vendor等。如果不设置忽略,AI读取上下文的时候会把大量无关文件混进来,既拖慢响应速度,又干扰判断。绝大多数工具都支持在设置里添加glob表达式来忽略目录,建议落地项目时第一时间加上。
还要注意敏感信息的保护。像application.yml里的数据库密码、secret.properties里的私钥、.env文件里的密钥,这些文件要么加入忽略列表不上传,要么在使用AI对话时千万别直接引用。有些工具提供“敏感信息过滤”选项,建议在预览阶段就打开。
另外,Java项目里的mvnw、gradlew这类构建工具脚本,以及.git目录下的文件,都不应该喂给AI。配置好忽略规则,不仅是为了安全,更是为了让AI专注在真正的业务代码上,提高补全准确率。
4.3 快捷键与常用交互习惯
用AI编程工具和不用完全是两套交互习惯。刚开始用的时候,很多人还是死磕“每行代码都自己敲”,结果效率反而低下。正确做法是养成几个肌肉记忆:
第一,写注释描述意图,让AI补实现。比如你在Service层要写一个“根据用户ID查询用户近期订单并计算总额”的方法,先把这一句话写成中文注释,然后回车,让模型根据注释生成方法。这个习惯比“先写方法签名再等补全”效率高很多,因为给AI的理解上下文更充分。
第二,学会用Tab键接受和Esc键拒绝。补全会不断“试探”,你需要快速决定是否采信。不要花大力气修改补全结果,如果一次补全错了一半,果断按Esc重新触发或者改触发条件,不要在错误的道路上折腾太久。
第三,善用侧边栏聊天。补全面板应对的是“写一行/补一个方法”的需求,遇到“如何重构这个类”“这个报错是什么原因”这类问题,丢到侧边栏聊天面板更合适。把相关文件添加到聊天上下文(不同工具的操作不太一样,有的用#选择文件,有的自动带出),再提问题,生成的答案会精准很多。
4.4 Prompt的基本功:把需求说清楚
AI编程工具不是搜索引擎,不能指望丢一句话它就能读懂你脑子里的完整业务语义。写Prompt的黄金法则是:背景信息+输入输出+约束条件,三者缺一不可。
举个反例,你输入“帮我写一个分页接口”,AI会给你一个极其普通的Spring Data分页接口。这个结果不是错的,但大概率不是你真实想要的。如果你这样写:
“写一个用户订单查询接口,入参是userId、pageNum、pageSize,按下单时间倒序,返回统一响应体Result<T>,订单状态字段OrderStatus枚举有三个值:PENDING、PAID、CANCELLED,只返回当前状态的订单。”
AI生成的代码命中率会立刻上一个台阶,因为约束条件足够多。这个道理和带人一样,如果你只说“干个活”,对方只能随便干;你把验收标准说清楚,对方才知道朝哪个方向使劲。
再分享一个实用小技巧:在很多工具里,你可以在聊天气氛里指定“角色”和“输出格式”。比如“你是一名资深Java工程师,请用Java 17编写,包含必要的import、注释和异常处理”,这样出来的代码风格和工程化程度会好很多。设定明确角色和格式,看起来是玄学,实际上非常有效。
5. 实战演示:让AI帮你完成一个订单查询模块
5.1 需求描述
理论讲再多,不如来一次完整的实操。这一节我模拟一个非常常见的Java Spring Boot场景,带你走一遍从需求到实现的完整流程,同时也给你看清楚AI在每一步能帮到什么程度。
需求很简单:写一个“用户订单查询”模块,接口接受userId和订单状态参数,分页返回订单列表,按照创建时间倒序排序,并且返回的数据里要包含订单明细的商品名称。
我会用最主流的交互方式演示——先在Controller层写注释触发补全,用聊天面板生成Mapper方法,最后再让AI帮我补齐Service层的边界逻辑。
5.2 从Controller到Mapper的实现过程
第一步,新建订单Controller,先敲出类上方的注释和类名,然后在方法位置写注释:
/** * 分页查询用户订单 * @param userId 用户ID * @param status 订单状态,可空 * @param pageNum 页码,从1开始 * @param pageSize 每页大小 * @return 统一响应体,包含订单列表和总数 */ @PostMapping("/list") public Result<PageResult<OrderVO>> listUserOrders(@RequestParam Long userId, @RequestParam(required = false) OrderStatus status, @RequestParam(defaultValue = "1") Integer pageNum, @RequestParam(defaultValue = "10") Integer pageSize) {如果AI工具理解力足够,它看到注释之后会直接补出方法体:构造查询参数、调用Service、包装返回结果、处理异常。如果它只补了前半段或者干脆没反应,你把上面的注释再精炼一点试试。
第二步,到Service层。让AI补一个接口方法和实现类:
我可以直接在聊天面板里这样说:
“在OrderServiceImpl中实现方法PageResult<OrderVO> queryUserOrders(Long userId, OrderStatus status, int pageNum, int pageSize),需要先调用OrderMapper查询订单分页数据,再根据订单ID批量查询订单明细,最后组装成OrderVO列表。注意订单明细的查询要用批量查询避免N+1问题。”
这条提示词给出了明确的调用链和数据组装逻辑,实测下来的生成效果通常都不错。如果模型生成了循环查明细的代码,我会继续让它改成批量查询。
第三步,Mapper层。这里AI的发挥空间最大,也最能暴露问题。你可以让AI直接生成Mapper接口和XML映射文件:
“生成一个MyBatis的Mapper接口方法,参数有userId、status、pageNum、pageSize,分页查询订单表orders,查询条件为user_id = ? 和 status = ?,按created_at desc排序。再生成对应的XML写法,注意if标签判断status不为空。”
MyBatis的XML格式非常固定,AI对这类“模板味道”极重的代码生成成功率很高,我基本上每次都是直接让AI生成,人工只做核对字段名的工作。
5.3 代码审查与人工修正
AI生成完代码之后,最不能省的一步是审查。我自己会按这个顺序过一遍:
第一,看业务正确性。查询条件对不对?状态为空时要不要过滤?分页从0开始还是从1开始?这些业务常识AI不会替你思考,它只会照着你的Prompt来。出现“查出来10条数据,但总数统计是0”这类问题,十有八九是条件拼接有误。
第二,看类型和边界。Long和long混用、Integer空指针、BigDecimal除零,这些隐蔽Bug是AI生成代码的重灾区。我用AI写财务相关代码时,每一处数值计算都会刻意加上空值判断和精度检查。
第三,看隐藏的系统问题。有没有N+1查询?有没有在循环里调用远程服务?这些性能隐患AI很难自己识别,需要你带着工程经验去审核。
有一个实用的做法:生成完代码之后,直接在聊天面板里问AI“这个方法是否存在性能或并发问题,请列出风险点”。你会发现它经常能给出不错的提示,相当于多了一个免费Reviewer。但记住,最终责任人是自己,AI给的建议只做参考,不是免责声明。
6. 使用AI编程工具最容易踩的坑(含排查建议)
6.1 常见问题速查表
这一节我把平时收集到的、以及在社群里看到的高频问题整理成一个速查表。你遇到对应现象时,直接对号入座。
| 现象 | 可能原因 | 排查与解决建议 |
|---|---|---|
| 插件安装后不出补全 | IDE版本过低、插件与内置语言服务冲突 | 升级IDE到最新版,并在插件设置里检查触发快捷键是否被占用 |
| 补全结果非常慢 | 项目文件太多,没有设置忽略目录 | 把node_modules、target等目录加入忽略列表 |
| 生成的代码总是缺import | 模型上下文不够,或者当前文件没有关联依赖信息 | 手动在Prompt中补充“使用Spring的@Autowired”等限定词 |
| 同一个问题反复答错 | 上下文里没有包含关键代码文件 | 在聊天面板中主动添加相关文件到上下文 |
| 代码被上传到云端,公司要求禁用 | 不合规 | 停用云端工具,改用本地模型或企业内网方案 |
| 免费工具突然无法使用 | 每日额度耗尽或服务器波动 | 查看额度界面,等次日重置,备用一个免费工具交叉使用 |
| 生成的代码涉及开源许可证问题 | 模型训练数据中包含了GPL等协议代码 | 在公司环境慎用,建议走法务合规流程 |
| 对话突然上下文丢失 | 会话超时或刷新页面 | 长对话任务拆分成多个短对话,并及时把AI生成结果保存到本地 |
| AI补全破坏了核心业务逻辑 | 提示词约束不足 | 关键业务代码不能让AI直接生成,让AI生成边界代码和模板,核心逻辑手写 |
6.2 一些没人明说的体感
说完速查表,再说几个比较主观但普遍存在的体感,这些在官方文档里绝对看不到。
第一,AI工具越用越“懂你”,这个“懂”不是模型变聪明了,而是你适应了它的风格。刚开始用Cursor时我觉得它的对话式改代码很别扭,用了一个礼拜之后反而觉得传统IDE的补全不够用了。适应期是真实存在的,别因为头三天的生涩就放弃。
第二,写复杂业务时,AI更像一个“高级自动补全”而不是“架构师”。它非常擅长把你说清楚的小需求高效实现,但如果你希望它能帮你理清楚一个业务模块的整体设计、隐藏规则和状态流转,那大概率会让你失望。最好的使用方式是你来做架构,让AI填充细节;反过来用,你会被它坑得很惨。
第三,模型迭代的速度非常快,任何时候“最佳工具”的名单都在变动。这周看着很惊艳的工具,下个月可能就被另一个工具的免费策略碾压;今天能免费无限次使用的功能,明天可能就收费了。所以我的策略是:保持两到三个备选工具,主力工具稳定使用,备选工具观察更新动态,不要在有明显短板的问题上死磕一个工具。
第四,关于免费工具的资源占用。有些插件装了之后不仅占内存,还会导致IDE卡顿,尤其是在大项目里。如果你发现编译变慢、运行调试卡顿,可以考虑在AI插件的设置里降低“自动索引”的频率,或者只在需要时手动触发。AI工具是为了提效,如果它反过来拖慢了你的主力开发流程,那就得不偿失了。
写在最后的几句大实话
很多人问我最终推荐哪个工具,我的答案永远是同一个:没有标准答案,但有标准流程——先明确自己的项目类型和痛点,再用评估维度横向对比,最后用真实项目试跑一天。我自己目前的主力组合是“IntelliJ IDEA+通义灵码”写Java后端,偶尔切到Cursor做原型验证和小工具开发,但这不代表它适合所有人。你完全可能得出不同的结论,那才是正常的。
最后再分享一个小技巧:无论选择哪个工具,都要养成“让AI先写测试”的习惯。你让AI补一个功能方法的同时,让它顺手生成对应的单元测试,这不仅能迫使你把需求约束描述清楚,还能免费获得一个基本的回归保障。我用这个习惯之后,代码审查时心里踏实了很多,强烈建议你也试试。