主线课程/8

8 课:用 AI 做重构、代码审查与风险发现

让 AI 帮你先筛风险,再做最小安全改动

重构代码审查风险2h

几乎每个后端项目都会走到这样一个阶段:功能还能跑,但代码越来越厚,职责开始漂移,评审越来越难看清重点。团队通常卡在两个担心之间,一边知道该重构,一边又担心“改大了出事”。AI 在这一课最有用的地方,不是推动大规模优雅重写,而是帮助你更早发现热点、更稳地切最小安全改动,并把审查意见组织成可执行结论。

真实研发场景

真正阻碍重构的不是懒,而是不确定性

很多代码大家都知道“不太对”,例如职责开始堆在一起、重复逻辑到处出现、异常语义越来越散。但真正要动它时,团队常常又停下来,因为没人敢确保改动不会影响既有行为。于是代码继续累积,直到某次需求不得不碰它,风险更大。

AI 能在这里帮上忙,是因为它很适合先做“热点扫描”和“风险预判”。但前提仍然是:你必须先知道什么行为不能变。

本课核心是“先锁行为,再做最小安全改动”

重构真正应该追求的,不是一次性变得更优雅,而是每次都能明确回答:

  • 这次改的是哪一块
  • 哪些行为必须保持不变
  • 风险主要在哪里
  • 改完后用什么证据证明安全

传统做法的痛点

代码审查最常见的问题是“只看风格,不看风险”

常见做法表面上完成了什么实际遗漏了什么
讨论命名和格式看起来很认真没看行为是否变化
给出“大改建议”看起来很先进没考虑改动范围和验证成本
看到重复就想合并看起来在去重没确认重复逻辑是否真同构
审查意见很长看起来覆盖很多没有按风险和优先级排序

重构和审查阶段最值钱的信息,不是“哪里不优雅”,而是“哪里会出风险”。

最常见的三个重构误区

  • 没有测试或行为锚点,就直接开始改结构
  • 让 AI 给出“大而全重构方案”,却没有分批切片
  • 审查意见停留在抽象描述,没有变成可执行结论

AI 能提效到哪一步

AI 最适合做的重构与审查辅助

  • 热点识别:指出长方法、重复逻辑、职责漂移和边界不清的区域
  • 方案候选:给出几个更小的改动切法,而不是只给终态设计
  • diff 风险筛查:从行为变化、异常路径、权限边界角度扫风险
  • 审查意见整理:把零散观察变成带优先级的结构化结论

不适合直接交给 AI 的动作

动作原因
在没有测试时主导大规模重构缺少安全护栏
直接采纳“更优雅”的终态方案可能和当前业务节奏不匹配
把审查意见原样贴进 PR模型的合理性不等于准确性

一个实用原则是:AI 最适合告诉你“先改哪里、先防什么”,不适合替你决定“一次改到什么程度”。

推荐工作流

先锁定行为,再讨论结构

重构前先准备:

  • 现有关键测试或最小行为说明
  • 你认为最痛的热点区域
  • 这次能接受的改动范围
  • 明确不打算顺手处理的内容

五步最小安全改动法

步骤AI 产出人工要做什么验证方式
1. 锁行为不可改变行为清单补关键测试或说明是否有明确安全边界
2. 扫热点候选重构点与风险选择最小切片是否能单独提交和验证
3. 做改动局部重构建议或 diff 风险清单只做这一刀该做的事diff 是否可控
4. 跑验证回归测试、关键用例、行为对照确认无行为漂移真实运行结果
5. 写审查结论结构化 review 备注只保留高价值结论团队是否可复用

一个适合审查阶段的输出格式

md
发现:
影响范围:
风险等级:
建议动作:
需要的验证:

这个格式能逼 AI 和工程师都不要停留在“这里可以优化一下”这种空话上。

与仓库代码和模板的映射

常见误用与风险

误用一:没有测试就让 AI 给大重构方案

没有行为护栏时,越“漂亮”的改法越危险。

误用二:把代码审查做成风格检查

风格问题可以以后再谈,行为风险和边界风险必须先谈。

误用三:把 AI 审查意见原样发给同事

审查意见需要人工筛选和排序,否则只会制造噪音。

误用四:重构后不记录为什么这样改

没有结构化结论,团队无法把这次经验复用到下一次相似场景。

课后练习

建议直接在 ../课后练习/第8课/练习.md 中完成本课练习,并使用 ../课后练习/通用提交模板.md 保留 AI 输入、人工删改和验证结果。

如果你只做最小版交付,也至少保留四样东西:结构化输入、AI 产出摘要、人工判断记录、最终验证结果。

基础题

找一个你认为“该重构但不敢动”的类或方法,先写出不可改变的行为清单。

进阶题

让 AI 给出 2 到 3 个更小的改动切片,再人工选择最安全的一刀并说明理由。

挑战题

对这次改动输出一份结构化审查结论,至少包含发现、风险等级、建议动作和验证结果。