找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

4078

积分

0

好友

565

主题
发表于 8 小时前 | 查看: 4| 回复: 0

最近有个研究结论在圈子里挺火的:

AI 写代码,效率反而下降 19%。

很多人看到这个结果,第一反应就是:

  • “我早就说 AI 没用”
  • “写代码还是得靠人”
  • “AI 只是个高级搜索引擎”

但当我仔细看过这份研究后,第一感觉并不是 AI 不行

而是:你可能 用错地方了

作为一名用了两年多 AI 写代码的 Java 后端开发者,从 Copilot → ChatGPT → Cursor → Claude 我基本都用过。真实的感受很直接:

  • 在特定场景下,AI 能让你的 效率直接翻倍
  • 但在另一些场景里,AI 确实帮不上什么忙

如果你把 AI 用在了它不擅长的地方,效率不下降才怪呢。

今天,我就结合自己的 Java 后端开发经验,跟大家聊聊 AI 写代码最有价值的 5 个场景。每个场景我都会给出效率提升的估算、真实案例、可能遇到的坑以及我的使用方法,希望能帮你找到 AI 的正确打开方式。


场景一:CRUD 生成 | 提效 70% ~ 80% ⭐⭐⭐⭐⭐

这绝对是 AI 最强的场景,没有之一

先回想一下传统的开发流程。要写一个简单的“订单”增删改查接口,Java 后端通常需要创建这些文件:

Entity
Mapper
Mapper XML
Service
ServiceImpl
Controller

如果再加上参数校验、分页、Swagger 文档、统一返回体,一套 CRUD 40分钟起步是很正常的,复杂一点耗上 1小时 也不稀奇。

AI 的做法

我现在的基本操作是,把 数据库表结构 + 明确的需求描述 直接丢给 Cursor 这类工具。

生成订单 CRUD
使用 MyBatis Plus
包含分页查询
加 Swagger 注解
统一返回 Result

通常 5~10分钟,它就能直接生成 Entity、Mapper、Service、Controller、DTO、VO 等一整套代码。而且生成的代码规范度不错:注解齐全、字段映射正确、Swagger 注解也自动加好了。

但别高兴太早

AI 写 CRUD 有几个 经典的坑,需要你特别留意:

坑一:参数校验不完整
AI 通常只会生成基础的 @NotNull 注解,但对于业务中更细致的校验规则,比如 @Size@Pattern,它往往考虑不到。

坑二:分页是“假分页”
很多 AI 会生成类似下面的内存分页代码,数据量一大,性能立刻出问题。

list.stream()
.skip()
.limit()

坑三:异常处理过于粗糙
AI 很喜欢写笼统的 catch (Exception e),但在真实项目中,我们需要精细地区分业务异常、系统异常、数据异常等。

我的做法

AI 负责生成代码骨架,我负责检查核心逻辑。这样一来,效率比纯手写高得多,同时又不会因为盲目相信 AI 而在代码里埋下地雷。

结论:CRUD 是 AI 的主场,但你仍然需要 Review 每一行代码。因为 AI 写的 Bug,往往比人写的更隐蔽。

场景二:Bug 排查 | 提效 40% ~ 60% ⭐⭐⭐⭐

举个真实例子:系统突然抛出 NullPointerException

传统的排查流程是:看日志 → 定位报错行 → 向上追溯调用链 → 打断点 → 尝试复现。顺利的话可能 15分钟,不顺利 半小时起步 都很常见。

现在我的做法是,把 异常堆栈信息 + 相关代码片段 直接丢给 Claude。

分析这个异常

通常 2分钟内 它就能给出分析结果,包括报错的根本原因、触发条件以及修复建议,准确率其实相当高。

SQL 优化同理

面对慢查询,把 EXPLAIN 的结果丢给 AI,它能帮你分析是否进行了全表扫描、是否缺少索引、JOIN 顺序是否合理。大部分建议 是靠谱的

但复杂问题不行

遇到分布式事务、跨服务数据不一致、棘手的并发问题时,AI 基本就帮不上忙了。原因很简单:它不了解你的完整系统上下文和业务复杂性

结论:AI Debug 就像一个经验丰富的实习生。标准问题它能秒解,但复杂问题最终还得靠你自己。

AI修Bug最佳实践流程图:通过测试驱动修复避免低效循环

场景三:代码重构 | 提效 30% ~ 50% ⭐⭐⭐

重构可以分几个层级来看,AI 的能力也各不相同。

方法级重构(很好用)

例如,面对一团糟的 if-else 逻辑:

if(type==1){
}
else if(type==2){
}
else if(type==3){
}

你可以直接让 AI:“用策略模式重构”。它真的能生成 StrategyStrategyFactoryStrategyImpl 等结构清晰的代码。

模块级重构(能力一般)

比如,一个积累了2000行代码的 Service 类,让 AI “拆分职责”。它能给出一个大致方案,但在类命名、职责边界划分上往往不够精准,需要你进行大量的人工调整。

架构级重构(基本不行)

涉及到单体拆微服务、分库分表、领域驱动设计拆分时,AI 给出的方案通常只能作为参考。因为这其中牵涉到业务理解、架构权衡和数据迁移等复杂决策。

结论:重构的本质是 深刻理解业务。AI 能帮你 搬砖(实施具体变换),但不能帮你 画蓝图(制定重构战略)。

场景四:写单元测试 | 提效 50% ~ 70% ⭐⭐⭐⭐

写单元测试,尤其是 Mock 各种依赖,可能是很多 Java 程序员最头疼的任务之一。为一個 Service 方法编写测试,通常要 mock Mapper、构造正常和异常用例,花上 30分钟 再正常不过。

AI 的做法

把 Service 代码丢给 AI,并指示:“用 JUnit5 + Mockito 生成测试”。

用 JUnit5 + Mockito
生成测试

2~3分钟,一套测试代码就生成了。例如,对于下面这个查询订单详情的方法:

public OrderDetailVO getOrderDetail(Long orderId) {

    Order order = orderMapper.selectById(orderId);

    if (order == null) {
        throw new BizException(ErrorCode.ORDER_NOT_FOUND);
    }

    List<OrderItem> items = orderItemMapper.selectByOrderId(orderId);

    OrderDetailVO vo = OrderConverter.toDetailVO(order);

    vo.setItems(OrderConverter.toItemVOList(items));

    vo.setTotalAmount(calcTotalAmount(items));

    return vo;
}

AI 生成的测试骨架如下,质量完全可以直接使用或稍作修改

@ExtendWith(MockitoExtension.class)
class OrderServiceTest {

    @Mock
    private OrderMapper orderMapper;

    @Mock
    private OrderItemMapper orderItemMapper;

    @InjectMocks
    private OrderServiceImpl orderService;

    @Test
    void getOrderDetail_success() {

        Order order = buildMockOrder();

        when(orderMapper.selectById(1001L)).thenReturn(order);

        OrderDetailVO result = orderService.getOrderDetail(1001L);

        assertNotNull(result);
    }

}

但 AI 会漏掉边界情况

比如“商品列表为空”、“金额为零”等特殊业务边界,需要你人工补充测试用例。

我的策略是:让 AI 完成 80% 的基础测试代码编写,我负责补充 20% 的关键边界和复杂场景测试。这样组合起来,效率极高。

测试左移与智能测试结合,共建质量文化

场景五:写技术文档 | 提效 80% ~ 90% ⭐⭐⭐⭐⭐

这是 AI 最被低估的一个应用场景

很多 Java 程序员宁愿多写两行代码,也不愿动手写文档。比如,面对一个简单的地址管理 Controller:

@PostMapping("/address/add")
public Result<Long> addAddress(@RequestBody AddressAddReq req)

@GetMapping("/address/list")
public Result<List<AddressVO>> listAddress()

把代码丢给 AI,让它“生成 Markdown 格式的接口文档”。2分钟,一份包含接口路径、参数说明、甚至能解析出部分校验规则的文档就出来了。

做技术方案设计也一样。给 AI 需求描述和技术选型倾向,10分钟 它就能生成一份包含项目背景、详细方案、风险评估和技术选型依据的完整文档初稿。

如果你还在坚持 纯手写技术文档,那可能真的在 浪费宝贵的开发时间。利用 AI 辅助文档创作,能极大解放你的生产力。

AI Agent 工作流程示意图:感知、思考与行动

总结与思考

我们来快速回顾一下这五个场景:

场景 提效幅度 推荐度 核心结论
CRUD生成 70-80% ⭐⭐⭐⭐⭐ AI 的绝对主场
Bug排查 40-60% ⭐⭐⭐⭐ 标准问题秒解,复杂问题无效
代码重构 30-50% ⭐⭐⭐ AI 只能“搬砖”,不能“画图”
单元测试 50-70% ⭐⭐⭐⭐ AI 写 80%,人工补 20%,效率奇高
技术文档 80-90% ⭐⭐⭐⭐⭐ 最被低估的提效场景

关于“效率下降19%”的研究

那个研究有一个关键背景:测试对象是一个超过 110万行代码 的超大型代码库。AI 的上下文窗口有限,难以理解如此庞大的项目全貌,效率自然下降。

但现实中的项目往往模块清晰、代码量适中、需求明确。在这些场景下,AI 的优势就能充分展现出来。

所以问题的关键,不是 AI 本身行不行,而是 你有没有把它用在对的场景里

我的 AI 使用原则

  1. 做 AI 擅长的:CRUD 生成、技术文档、单元测试、标准 Bug 分析。把这些重复性高、模式固定的工作交给它。
  2. 自己做 AI 不擅长的:系统架构设计、复杂业务逻辑梳理、分布式难题解决。这些需要深度思考和业务理解的工作,依然要牢牢掌握在自己手中。
  3. 永远保持 Review:对 AI 生成的代码,需要投入比对人写代码更仔细的审查。因为它可能会犯一些人类不易察觉的隐蔽错误。

作为一名写了几年 Java 的后端开发,合理使用 AI 工具后,我每天大概能节省 1~2小时 的重复劳动时间。但最后必须说一句实话:AI 不会让你立刻年薪百万。不过,它的确能 让你的开发效率显著提升,前提是,你得 用对地方

对于如何在具体场景中更好地实施 AI 辅助的单元测试,你可以 在云栈社区的软件测试板块 找到更多深入的讨论和实战案例。




上一篇:阿里Qwen团队负责人林俊旸离任,同日马云携高管探讨AI战略
下一篇:CVPR 2026新动向:GeoWorld几何世界模型,以双曲流形赋能视觉规划
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-3-5 20:28 , Processed in 0.527019 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表