从惊艳到困惑:AI结对编程实践全记录

作者:袖梨 2026-05-22

img_6a0ec19012ea630.webp

01 引言

深度体验AI编程助手CodeBuddy后,它在Spring Cloud项目中的表现令人印象深刻。本文将客观分享使用过程中的亮点与挑战,带您了解AI辅助开发的真实体验。

02 项目背景

项目采用主流微服务架构,具体技术环境如下:

  1. 架构设计:基于Spring Cloud实现模块化拆分,包含api定义Feign接口、service业务实现和app控制器层
  2. 数据访问:采用MyBatis框架,支持Example动态SQL和XML两种方式
  3. 核心功能:重点开发用户关系管理、分页查询和验证码登录功能
  4. 技术选型:Spring Boot 2.7.18为基础,整合Feign、MyBatis、Guava和Lombok

项目通过逆向工程生成实体类,基于SpringBoot+SpringCloud架构重构分布式系统。

项目结构:

img_6a0ec19012eaa31.webp

03 让人惊喜的4个优势

3.1 跨模块一致性维护能力

最突出的亮点在于多模块协同开发能力。微服务项目中,AI能自动完成:

  1. api模块添加Feign接口的@RequestMapping
  2. service模块编写无注解的业务实现
  3. app模块组装参数并调用服务

这种跨模块的上下文记忆能力远超传统代码补全工具,实现了完整的开发闭环。特别在逆向工程生成的代码改造中,能自动完成FeignClient生成和相关联代码同步修改。

img_6a0ec19012eac32.webp

img_6a0ec19012eae33.webp

3.2 工程化思维

AI展现出对项目结构的深刻理解。实现关注列表功能时,响应以下需求:

"查询关注列表,不要使用xml的方式,关注者姓名第一个字展示,后面是星号代替"

AI自动完成:

  1. 调用uvmMemberFeignClient.selectIds()批量查询
  2. 通过UvmMemberRole判断角色类型
  3. 创建maskName()方法实现姓名脱敏

更可贵的是能识别团队编码规范,如分页必须使用example.setPagination(pagination),返回必须包装Pagination对象,确保代码可直接合并。

3.3 并行搜索

信息检索效率惊人。实现getFileListByObjectIds方法时,AI同步执行:

  1. 搜索UvmFileInfoFeignClient.java
  2. 搜索UvmFileInfoServiceImpl.java
  3. 全局验证andObjectIdIn是否支持IN查询

三重验证确保10秒内给出精准方案。

3.4 快速纠错与模式适应

初期在Service实现类误加@RestController@RequestMapping,经两次纠正后:

"清除实现类的requestmapping以及注解"
"实现类不需要requestmapping"

后续所有ServiceImpl生成都自动规避Web层注解,仅在Feign和Service接口保留必要注解,展现出优秀的反馈学习能力。

04 必须正视的2个问题

4.1 需要明确的"架构约束"输入

虽然能记忆项目结构,但AI不会自动推断团队规范:

  1. Service实现类禁止添加@RequestMapping
  2. Feign接口必须继承GenericService
  3. 强制使用Example模式替代手写XML

建议初次使用时,先用少量方法明确告知命名规范、注解规范和分层规范,比事后修正更高效。

4.2 复杂业务逻辑需要人工兜底

多表关联的复杂业务场景仍需人工验证。实现关注/回关逻辑时,需求如下:

"如果相互关注,需要更新之前的关注为已回关"

开发者必须确认:

  1. followBack字段类型(查BaseModel确认为Boolean)
  2. 互相关注判断方向(A关注B时检查B是否关注A)
  3. 删除策略(项目统一采用del_flag软删除)

AI可生成基础代码,但业务正确性的最终责任仍属开发者,特别是涉及双向状态更新的场景必须逐行审查。

05 小小经验

5.1 分层指令

推荐分层渐进式开发:

Step 1: 在FeignClient定义接口+@RequestMapping
Step 2: 在ServiceImpl实现业务(不加Web注解)
Step 3: 在Controller组装参数并调用

分层开发保持焦点明确,便于代码审查。初期需适应提示词编写,但熟练后效率显著提升。

5.2 善用参考

通过参考现有代码可大幅提升效率。实现cancelFollow时只需提示:

"参考`uvmMemberFollowFeignClient.follow`方法"

AI即自动理解幂等校验、软删除、状态更新等逻辑,比从零描述更高效。

5.3 明确告知"不要做什么"

必须明确禁止某些做法:

  1. 禁止使用XML方式
  2. 禁止在实现类添加RequestMapping
  3. 禁止新建Mapper方法,强制使用Example

单表查询优先使用动态SQL,避免手写XML。

5.4 引用文件

直接引用文件可节省token消耗,帮助AI快速定位待修改方法,避免全工程扫描。

img_6a0ec19012eb034.webp

5.5 会话聚焦

建议会话围绕单一模块或功能展开,避免在无关文件间频繁切换,保持上下文连贯性。

06 小结

AI编程助手重新定义了开发效率,将开发者从重复劳动中解放,更专注于业务逻辑设计、性能优化和架构审查。建议从小功能闭环开始体验,当感受到"描述即得代码"的高效后,这种开发方式将不可或缺。

相关文章

精彩推荐