从补全到重构:我在三个项目里用 AI 省下多少时间

从补全到重构:我在三个项目里用 AI 省下多少时间
说实话,以前我觉得 AI 写代码就是逗我玩的,现在嘛……真香。
当然,这种“真香”是有前提的。核心在于别把它当黑盒魔法供着,也别指望它能完全替代你的脑子。说白了,就是把它当成一个手速很快、但偶尔会瞎猜的初级工程师。它不背锅——我审。

经过这几个项目的摸爬滚打,我算了一笔账:以前写完一个标准的 CRUD 接口,从建表到联调至少得折腾二十五分钟。现在?贴好 Schema,让 AI 生成,我再快速过一遍类型定义,十二分钟搞定。省下的时间,够我摸鱼(划掉)深入研究那个棘手的边界条件了。
代码生成:别只扔功能描述
在日常开发里,我最烦的不是写不出核心逻辑,而是写那些枯燥的样板代码。比如手动创建一堆 DTO、把数据库模型一个个转成 TypeScript 接口。
上个月给兰屿星奇的一个客户做支付模块重构,涉及十几个实体的增删改查。要是以前,我得手动复制粘贴改半天。这次我直接先把核心的 Prisma Schema 贴进去,然后告诉它:
我要生成的代码得严格遵循项目现有的装饰器风格,TypeScript 必须开 strict 模式,而且每一层都要有基础的异常处理。
这种做法比我自己写还快,关键是生成的代码和我的项目风格高度一致,不需要二次大改。不过,我总会在提示词末尾加一句:请解释一下为什么这么写。这招很管用,有时候 AI 会自作聪明地引入一些我没要求的依赖,或者用了一个我不熟悉的 API 版本,通过让它解释,我能快速发现这些“小动作”。
下面这个提示词结构,我基本是直接照搬用的:
你是一个资深后端工程师。请基于以下 Prisma Schema 生成对应的 NestJS Service 层代码。
要求:
1. 使用 TypeScript strict 模式
2. 遵循项目现有的装饰器风格
3. 包含基本的异常处理逻辑
Schema:
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
}
记住,AI 生成的代码不是最终答案,它只是一个质量不错的初稿。真正的价值在于你的审视和微调。没它,我今天估计得加班到十点补完剩下那几个 DTO 文件。
调试:当“第二双眼睛”派上用场
AI 在调试方面的价值,往往被低估了。
有一次线上出现了一个极其隐蔽的死锁问题。日志报错信息模棱两可,我盯着屏幕看了俩小时,头发都快抓掉了,还是一头雾水。后来我把关键的业务逻辑代码、当时的数据库事务隔离级别配置,甚至相关的环境变量脱敏后一起丢给 AI。
它没过多久就指出了嫌疑点:在特定的执行路径下,两个事务获取锁的顺序不一致,导致了循环等待。它还建议引入确定性的锁顺序策略来修复。
我去验证了一下,果然如此。那次死锁,我真盯了俩小时。AI 一眼看穿的原因很简单——它能瞬间关联海量文档里的类似问题,提出人类容易忽略的边缘场景假设。作为“第二双眼睛”,它在打破思维定势这方面确实有点东西。
对于这种难以复现的间歇性故障,我还会让 AI 帮忙设计监控埋点方案,让问题在未来的发生变得“可见”。
下面的模板是我处理此类问题的常用格式:
我正在调试一个 Node.js 应用中的死锁问题。
错误信息:[粘贴错误日志]
相关代码:[粘贴关键代码片段]
数据库配置:[粘贴事务隔离级别等配置]
请分析可能的原因,并给出具体的排查步骤和修复建议。特别关注并发场景下的资源竞争问题。
当然,我不能完全盲信它的判断。结合业务逻辑进行二次验证,是必须的。
重构:小步快跑,别试图一口吃成胖子
到了项目中期,技术债堆积如山,重构往往是让人望而却步的硬骨头。
以前我会对重构感到恐惧,担心一改就崩。现在我有了一套比较稳的策略:绝不讓 AI 直接对整个大模块进行重写,而是采用小步快跑的方式。
比如在将老旧的 jQuery 项目迁移到 React 框架时,我不会让它一次性生成所有组件。相反,我会让它分析单个组件的逻辑复杂度,生成初步的 React Hooks 转换方案,并明确标注出哪些 DOM 操作需要我手动处理。同时,我会要求它编写对应的单元测试,确保迁移后的行为和旧代码保持一致。
这样做的心理门槛低了很多。每次只处理一个功能模块,系统始终处于可运行状态。原有测试用例也不会丢,我会让 AI 帮助将旧逻辑适配到新框架,验证行为一致性。
这里有一个原则必须守住:涉及资金、权限的核心逻辑,无论 AI 转换得多流畅,都必须由资深工程师(也就是我)复核。毕竟,AI 是重构过程中的风险评估助手,但责任在我。
下面是我评估重构风险时的提示词示例:
请分析以下 jQuery 组件的代码复杂度,并评估迁移到 React 的风险点。
原始代码:
[粘贴 jQuery 代码]
请输出:
1. 逻辑复杂度评分(低/中/高)
2. 需要特殊处理的 DOM 操作列表
3. 建议的 React Hooks 转换方案
4. 潜在的风险点和注意事项
通过这种方式,我把多个遗留系统的维护成本降了下来。AI 不仅是代码转换器,更像是个随时能问的搭档。
沉淀:把经验变成资产
AI 辅助开发的效果,很大程度上取决于你的提示词技巧和对工具的熟悉程度。建议团队建立内部的提示词模板库,把常用的代码生成、调试分析场景标准化。
我自己每周会花二十分钟整理一下最近的提示词,删掉那些效果不好的,保留那些真正提效的。比写周报还准时。
这种持续的学习和优化,能让 AI 辅助开发从个人技巧升级为团队能力。以后遇到类似场景,直接翻库里的模板,效率翻倍。
如果想深入了解具体技术栈的落地细节,比如 TypeScript 项目的智能代码审查配置,或者前端组件的自动化测试生成,欢迎随时交流。
本文首发于 从补全到重构:我在三个项目里用 AI 省下多少时间 — https://lyxq.com.cn/en/blog/ai-assisted-development-practical-guide
转载或引用请注明出处,商业使用请联系作者获得授权。