关于"AI写代码",我见过两派激烈的争论。一派说"程序员要失业了",另一派说"AI写的代码根本不能用"。两派我都待过——一年前我是第二派,半年前我变成了第一派。现在我发现,两派都错了。
AI写代码这件事,既不是洪水猛兽,也不是万能灵药。它是一个极其强大的协作工具,关键在于你知不知道什么时候用它、怎么用。
下面是我在日常工作中用 AI 写代码的 10 个真实场景,每个场景我都附上了我的具体做法。不是理论,是我每天都在做的事情。
场景一:生成样板代码
这是最基础也最省力的用途。每当我需要写一个 CRUD 接口、一个配置类、一个 DTO 或者一个基础的 API 路由,我不会自己写。我会直接告诉 AI:"给我一个 Python FastAPI 的 CRUD 路由,模型是 User,字段有 id, name, email, created_at。"
我的做法:让 AI 生成后,我会逐行检查逻辑,特别是边界条件和错误处理。AI 擅长模式化的东西,但它不知道你的项目里有哪些特殊约定。
场景二:写正则表达式
我写了十几年代码,正则表达式永远是我的痛点。每次都要查文档、试半天。现在我不写了——我直接描述需求:"匹配一个 URL 中从 /product/ 后面到下一个 / 为止的数字ID。"
我的做法:让 AI 生成正则后,我至少要准备 3 个测试用例丢回去让它验证。正则的坑太多了,AI 第一次给出的往往不是最优解。
场景三:调试报错信息
遇到一个看不懂的报错,以前我会复制到 Google 搜,翻几个 StackOverflow 帖子。现在我把报错信息直接丢给 AI,附上相关的代码上下文。大部分情况下,AI 能直接指出问题所在,有时甚至比我自己看代码更快。
我的做法:不要只丢报错信息。一定要附上代码上下文和你的预期行为。AI 不是读心术,上下文越完整,它的诊断越准确。
场景四:重构建议
我有一段写了很久的代码,逻辑没问题但感觉"不太对劲"。我会把代码给 AI,让它提出重构建议。有时候它会发现我忽略的重复模式,有时候它会建议用更合适的语言特性。
我的做法:AI 的重构建议我从来不会全盘接受。我把它当作一个"代码审查伙伴",它的建议只作为参考,最终怎么改还是我说了算。而且每次改完,我都要确保测试通过。
场景五:写单元测试
写单元测试是我最不喜欢的工作之一,但偏偏它又很重要。现在我会先写好业务代码,然后让 AI 帮我生成测试用例。告诉它函数签名、输入输出的预期行为,AI 能生成一个不错的测试骨架。
我的做法:AI 生成的测试只能覆盖 happy path。边界情况、异常场景、mock 的配置,这些都需要我自己补充。但至少骨架有了,写起来快很多。
场景六:生成数据 Mock
开发时经常需要模拟数据,尤其是后端接口还没写好,我需要在前端调试的时候。让 AI 生成一批格式正确的 mock 数据,比我手动写 JSON 快得多。
我的做法:我会给 AI 一个数据结构的类型定义,然后指定需要多少条、值的范围。AI 生成的数据随机性不错,但偶尔会有不符合业务逻辑的组合,需要过一遍。
场景七:解释遗留代码
接手旧项目或者看别人的代码时,经常遇到一大段看不懂的逻辑。我会把这段代码贴给 AI,让它用中文解释这段代码在做什么。这比我自己一行一行地读效率高太多了。
我的做法:我会让 AI 先给一个整体概述,然后针对我不理解的细节追问。有时候 AI 的解释也有误,尤其是当代码中有复杂的业务逻辑时,我会再结合文档确认。
场景八:写文档注释
写注释和文档是我知道应该做但经常偷懒的事。现在我会写完代码后,让 AI 帮我生成函数注释、API 文档。我说清楚功能,它负责格式化输出。
我的做法:AI 生成的注释往往太啰嗦或者太空洞。我会给它一个项目中的注释示例作为风格参考,并要求它遵循同样的格式。一致性比完美更重要。
场景九:SQL 优化
写复杂的 SQL 查询时,我经常写完发现执行计划不太理想。我会把 SQL 和表结构给 AI,让它分析性能瓶颈并提出优化建议。特别是索引策略、JOIN 顺序、子查询改写这些,AI 的建议往往很有价值。
我的做法:AI 的优化建议我会用 EXPLAIN 实际验证。有时候 AI 建议的改写方式在理论上成立,但实际数据分布不同,效果反而更差。信任但要验证。
场景十:代码 Review 辅助
做 Code Review 时,我会把 PR 的 diff 发给 AI,让它帮忙检查潜在的问题——安全漏洞、性能问题、不符合最佳实践的地方。AI 的角度和人类 reviewer 不同,它更擅长发现模式层面的问题,而不擅长判断业务逻辑是否正确。
我的做法:AI 的 review 结果作为"第一遍过滤",我重点关注 AI 标记的高风险问题。但最终决策一定是我自己做的,因为 AI 不理解业务上下文和团队约定。
什么时候用 AI,什么时候自己写
经过这大半年的实践,我总结出了一个简单的判断标准:
- 用 AI:模式化的、信息密集的、有明确对错的——正则、SQL、样板代码、测试骨架、数据 mock
- 自己写:需要深度理解的、涉及业务决策的、有长期维护责任的——核心业务逻辑、架构设计、安全敏感代码、需要团队一致性的代码
AI 是那个帮你打字的手,但决定打什么字、为什么打这些字的,只能是你自己。把 AI 当成你的 junior 工程师——它速度快、知识面广,但需要你来做决策、把关质量。用好它,它就是你最好的搭档;用不好,它就是你最自信的 bug 制造机。