别让AI替你写代码,先让它替你写“审查清单”

最近一篇叫《AI疲劳是真的》的文章火了——它说出了很多开发者心里憋了很久的话:在AI时代写代码,反而更累了。

不是因为写得少,而是因为看得太多、改得太碎、想得太杂。
AI一秒钟甩出200行代码,你得花10分钟一行行确认:
– 这个函数名是不是和项目里已有的冲突?
– 这个API调用有没有漏掉错误处理?
– 这个测试用例……它真的在测业务逻辑,还是只在测“自己写的假数据”?

结果就是:你没在写代码,你在当「AI校对员」——不断切上下文、反复进进出出、脑子像被拧干的抹布。

但问题来了:我们真得亲手 review 每一行 AI 生成的代码吗?
答案是:不一定要“逐行审”,但必须系统性地审关键维度

提米哥翻遍上百个真实项目复盘 + 和37位一线工程师蹲点聊完,总结出一份极简但够硬的《AI生成代码四维审查清单》——不用背理论,打印出来贴显示器边,5秒扫一眼就能避开80%的坑。


✅ 维度一:确定性(Is it deterministic?)

❌ 错误认知:“只要测试通过,代码就可信。”
✅ 正确姿势:先问“这代码会不会今天能跑,明天就崩?”

LLM 不是编译器,它靠概率“猜”答案。同一个需求,让它生成10次,可能得到10个不同实现——有些连边界条件都没覆盖。
所以,别光看测试绿不绿,先盯住三件事:

  • 函数/变量命名是否和项目已有风格一致?(比如项目全用 camelCase,它却突然冒出 snake_case
  • 是否用了项目禁用的库或 API?(比如公司明令禁止用 eval(),它却悄悄塞进去了)
  • 所有 if/else 分支是否都有明确 fallback?有没有“写到一半就断掉”的空分支?

✅ 维度二:全局一致性(Does it fit the whole system?)

❌ 错误认知:“我只改这个文件,别的不用管。”
✅ 正确姿势:把AI当成新来的实习生——它不知道你们团队三年前定下的那个‘用户ID永远是字符串’的潜规则。

LLM 看不到整个项目,只能“盲人摸象”。常见翻车现场:

  • 同一个业务逻辑,在3个地方被AI重复写了3遍,每遍参数名还不一样;
  • 数据库字段明明是 status_code(整数),它却生成了 status: "active"(字符串);
  • 前端传来的 user_id 是字符串,后端接口却直接当数字 parseInt() 处理——上线5分钟后报错 NaN

✅ 应对口诀:“改一处,查三处”
– 查同名函数(有没有已存在的?)
– 查同业务关键词(比如搜 payment, refund, cancel 看是否已有统一状态机)
– 查配置文件(环境变量、常量定义、枚举值是否对齐)


✅ 维度三:可维护性(Can I fix this in 2 minutes, 6 months later?)

❌ 错误认知:“现在能跑就行,以后再说。”
✅ 正确姿势:把“未来那个加班的你”当成最严苛的 Code Reviewer。

AI最爱干的事:
– 把10行清晰逻辑,压缩成1行嵌套 map(filter(reduce())) ——看着很酷,改起来想删库;
– 在注释里写“TODO: 优化这里”,然后真·永远不优化;
– 用魔法数字(比如 if (status === 3))却不加注释说明 3 = PAYMENT_FAILED

✅ 快速自检三句话:
– 这段代码,我删掉所有注释,还能读懂它在做什么吗?
– 如果我要把 3 改成 4,需要改几处?(理想答案:1处,且是常量定义)
– 如果下周需求加个“导出Excel”,这段代码要动多少地方?(越少越好)


✅ 维度四:测试质量(Are the tests actually testing behavior?)

❌ 错误认知:“测试全绿=万事大吉。”
✅ 正确姿势:把AI生成的测试,当成一份“可疑文档”来读。

AI写的测试,常见三大幻觉:

  • 假阳性测试:用假数据“假装成功”,比如:
// ❌ 危险!只测了 happy path,没测任何异常
test("should return user", () => {
  const result = getUser("123"); // 假设这是个同步函数
  expect(result.name).toBe("Alice"); // 但万一 ID 不存在呢?它根本没测!
});
  • 复制粘贴式测试:10个测试,只有ID数字不同,其他全抄——等于只测了1种情况;
  • 测试命名误导人test("handles error" 实际代码里连 try/catch 都没写。

✅ 审查测试的黄金3问:
– 这个测试,删掉它,代码还会通过吗?(如果会,说明它没起作用)
– 这个测试,故意把实现函数改错1个字符,它会失败吗?(如果不会,说明它没覆盖真实逻辑)
– 这个测试名字,能不能让新人一眼看懂“它在保护哪条业务规则”?


最后送你一句提米哥的真心话:

AI 不是替代你思考的“外挂”,而是放大你经验的“杠杆”。
杠杆再猛,也得你亲手找准支点、看清方向、用力推——否则,只会把你自己甩飞出去。

别怕慢。
第一版用AI生成 → 第二版用这份清单快速过一遍 → 第三版加1个真实case验证 → 发PR。
比“一键生成+盲目信任”省下的时间,多十倍。

直达网址:https://github.com/nuwainfo/ffl

类似文章