每次跟同事聊 AI 写代码,总有人问:
"AI 生成的代码你敢直接上线吗?"
我的回答:不是"敢不敢"的问题,是"你有没有检查标准"的问题。
没有标准,自己写的代码也不敢上线。有标准,AI 写的代码一样能上。
3 条判断标准
标准一:类型安全 ✅/❌
typescript
// ❌ 不能上------有 any,运行时可能崩
const handleData = (data: any) => {
return data.list.map((item: any) => item.name)
}
// ✅ 可以上------类型完整,编译器帮你兜底
interface DataResponse {
list: Array<{ id: number; name: string }>
total: number
}
const handleData = (data: DataResponse) => {
return data.list.map((item) => item.name)
}
检查方法: 全局搜 any,有就不行。
标准二:边界处理 ✅/❌
typescript
// ❌ 不能上------接口返回缺字段就崩
const getUserName = (user: User) => {
return user.info.name.firstName + ' ' + user.info.name.lastName
}
// ✅ 可以上------有防御
const getUserName = (user: User) => {
const firstName = user?.info?.name?.firstName ?? ''
const lastName = user?.info?.name?.lastName ?? ''
return `${firstName} ${lastName}`.trim() || '--'
}
检查方法: 看所有 . 取值链路,有没有可能为 null 的环节。
标准三:副作用管理 ✅/❌
typescript
// ❌ 不能上------内存泄漏
useEffect(() => {
const timer = setInterval(() => fetchData(), 5000)
}, [])
// ✅ 可以上------有清理
useEffect(() => {
const timer = setInterval(() => fetchData(), 5000)
return () => clearInterval(timer)
}, [])
检查方法: 每个 useEffect 里有定时器/监听器/订阅的,必须有清理函数。
AI 最容易出问题的 5 个地方
erlang
出现频率
缺少空值防御 ████████████████████████████████ 60%
useEffect依赖错 ██████████████████████████ 45%
类型定义不完整 ████████████████████████ 40%
错误处理缺失 ████████████████████ 35%
接口字段名对不上 ██████████████████ 30%
规律:AI 倾向于假设"一切正常"------数据完整、接口不报错、组件不卸载。但现实是:什么都可能出问题。
AI代码审查工作流
timeline
title AI代码审查时间线(5分钟)
section 必查项(不过不能提交)
0-1分钟 : 检查any类型
1-2分钟 : 验证边界处理
2-3分钟 : 确认useEffect依赖
section 建议项(提升质量)
3-4分钟 : 检查重复代码
4-5分钟 : 验证命名规范
我的 Review 检查清单
markdown
## AI 代码 Review(5 分钟过一遍)
### 必查(不过不能提交)
- [ ] 没有 any
- [ ] 所有取值链路有 ?. 或 ?? 防御
- [ ] useEffect 依赖项正确
- [ ] useEffect 有清理函数(如果有副作用)
- [ ] 接口调用有 loading 状态
- [ ] 接口调用有错误处理
### 建议查(提升质量)
- [ ] 没有重复代码
- [ ] 组件不超过 250 行
- [ ] 变量命名语义化
- [ ] 魔法数字有常量定义
一个实用技巧:让 AI 自己检查自己
生成代码后,追加一句:
markdown
检查你刚才生成的代码:
1. 有没有 any?
2. 有没有可能为 null 但没防御的取值?
3. useEffect 依赖项是否正确?
4. 有没有内存泄漏风险?
如果有问题,直接修复。
这一步能额外发现 20-30% 的问题。AI 生成时可能"偷懒",但你让它检查时它会更严格。
一句话总结:AI 生成的代码不是"全信"或"全不信",而是用 3 条标准花 5 分钟判断。有标准的 review 比没标准的手写更安全。
💬 你 review AI 代码时最常发现什么问题?有没有自己的检查清单?