跳到主内容
refactorlegacysafemaintenance

Refactor Legacy Prompt:安全地给老代码动手术

让 AI 按「先锁行为、再小步改、每步可验证」的纪律重构遗留代码:列测试锚点、圈出高风险区、给出分步计划,禁止一次性大改写。强调保留外部行为、降低回归风险。

发布 2026-09-06

用法

把要重构的文件 / 模块贴进去,明确「目标」(降耦 / 提可读性 / 抽函数 / 去重复),让 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 处」,标红未覆盖区,建议先补最小冒烟测试再动。

延伸阅读

相关对比

Aider vs Claude Code:终端 AI 编程双雄怎么选

Aider vs Claude Code 2026 选型对比:开源 BYOK 多模型 vs Anthropic 订阅长任务 Agent,从编程能力、多模型支持、价格、Git 集成、国内可用性和适合人群判断,帮你选对终端 AI 编程工具。

Aider vs Continue:终端会话派还是 IDE 自建派?2026 对比

Aider 与 Continue 2026 选型对比:两者都是开源、模型可换的路线,但 Aider 是终端里的 Git-native 会话工具,每次改动自动生成一个 commit;Continue 是 IDE 内的可配置助手,强调自定义与自托管。从 6 个维度给出明确取舍。

Aider vs Crush:CLI pair programmer vs 终端 TUI agent(2026 实测选型)

Aider vs Crush 2026 选型对比:Git 原生 AI pair programmer vs Charmbracelet 终端 TUI agent。从工作哲学、多模型、Git 集成、LSP/MCP、价格和国内可用性帮你选对终端 AI 编程工具。

Cursor vs Aider:GUI IDE 还是 CLI?2026 对比

Cursor vs Aider 2026 选型对比:GUI IDE vs Git 原生 CLI,从 Composer vs Architect 双模型、Tab 补全、多模型 BYOK、价格计费、开源与否和适合人群判断,帮开发者选对。Cursor 是闭源 VS Code fork 月费 $20,Aider 是开源 Apache-2.0 CLI 自带 API key。

Aider vs OpenCode:两个开源终端 Agent,选哪个?2026 对比

Aider 与 OpenCode 2026 选型对比:两者都是开源终端 agent、都支持换模型,但 Aider 以 Git-native 工作流与成熟的多语言支持见长,OpenCode 主打模型无关、本地优先与终端交互体验。从 6 个维度给出明确取舍建议。

Augment Code vs Cursor:企业 AI 编程怎么选?Context Engine vs AI IDE 对比

Augment Code vs Cursor 2026 选型对比:Context Engine 全仓索引的企业 AI 平台 vs SpaceX 收购的 AI IDE 天花板,从形态、Context 覆盖、长任务、价格、合规、中文支持和适合人群 8 个维度判断,帮你选对企业 AI 编程工具。

相关评测