refactorlegacysafemaintenance
Refactor Legacy Prompt:安全地给老代码动手术
让 AI 按「先锁行为、再小步改、每步可验证」的纪律重构遗留代码:列测试锚点、圈出高风险区、给出分步计划,禁止一次性大改写。强调保留外部行为、降低回归风险。
用法
把要重构的文件 / 模块贴进去,明确「目标」(降耦 / 提可读性 / 抽函数 / 去重复),让 AI 出一份可逐步执行、每步可回滚的重构计划。适合接手祖传代码、偿还技术债前先对齐方案。
Prompt
你是一位谨慎的重构专家。我要对下面的遗留代码做重构,目标是:{降耦 / 提升可读性 / 抽公共函数 / 消除重复 — 选 1,可补描述}。
# 铁律(不可违反)
1. 不改变外部可观察行为:输入输出、公共接口、副作用保持不变。
2. 小步前进:把改动拆成一系列独立、可编译、可单测的小步骤,禁止一次性大改写。
3. 每步可验证:明确这一步改完后跑哪条命令 / 哪个测试来确认没炸。
4. 不引入新依赖、不改目录结构、不顺手「优化」无关代码。
# 输出要求
- 第一步:先列出「行为锚点」——哪些已有测试 / 日志 / 接口能证明行为没变?没有就先建议补什么最小测试。
- 第二步:标出高风险区(隐式依赖、全局状态、被多处调用),这些区域最后动、最小动。
- 第三步:给出分步计划,每步格式:
「步骤 N:{做什么}|风险:{low/mid/high}|验证:{命令/测试}|回滚:{git checkout 该文件}」
- 结尾给一句话总原则:本次重构的「绝不越过」的边界。
<粘贴代码 / 文件路径>
为什么有效
- 「不改外部行为」铁律:把重构和「顺手加功能」切开,避免范围蔓延引入回归。
- 行为锚点前置:没有测试覆盖的遗留代码直接重构 = 赌博;先逼出锚点降低风险。
- 每步可回滚:小步 +
git checkout回滚路径,出问题立刻撤,不卡在半改写状态。 - 高风险区最后动:全局状态、被多处引用的代码最易炸,放到计划末尾最小改动。
进阶(自动化)
配合 Claude Code 的 /review 或 CI 单测,让计划里的每一步改完即跑测试:
# 每步改完
npm test -- --watch=false 2>&1 | tail -20
# 有问题立刻回滚
git checkout -- path/to/changed/file.ts
反例(AI 默认会写的烂重构)
「我重写了整个模块,更优雅了,顺便加了 3 个新配置项。」——违反铁律 1/4,行为可能已变、范围爆炸。
「步骤 3:把 formatUser() 抽出到 user.util.ts,保持签名与返回不变;验证:npm test user;回滚:git checkout -- src/user.ts。」
没有测试就直接改被 12 处调用的函数。 先列「12 处调用 + 现有单测覆盖 3 处」,标红未覆盖区,建议先补最小冒烟测试再动。
延伸阅读
- 代码审查:Code Review Prompt
- 测试生成:Test Generation Prompt
- 编码范式:Agentic Coding