重构
重构 Prompt:安全改一段代码
让 AI 重构代码时不要顺手改行为?用这条 prompt 强制它
用法
选中要重构的代码段,配合下面的 prompt:
Prompt
请重构下面这段代码,要求:
**目标**:{改进可读性 / 提取函数 / 消除重复 / 改名 — 选 1}
**铁律**:
1. **不改变行为**。重构前后所有可观测行为必须 100% 一致(输入 → 输出 / 副作用)。
2. **不增加新功能**。如果你看到一个 bug,**告诉我但不要修**。
3. **不改 public API**(函数签名、导出名)。
4. **保留所有错误处理**。即使原代码错误处理写得很烂,也保留。修是另一个 PR 的事。
5. **保留所有注释**(除非注释明显不再准确)。
**输出**:
- 重构后的完整代码
- 一份 changelog:每条说明你**做了什么** + **为什么不破坏行为**
- 如果你看到 bug 或可疑代码,列在最后,**不要顺手改**
代码:
```
<paste here>
```
为什么有效
- "铁律"列得越具体,AI 越不容易"自作主张"
- "看到 bug 也不修"是关键——AI 经常把重构 + bug fix 混在一起,让 review 变噩梦
- "changelog 解释为什么不破坏行为"逼 AI 真正思考等价性,而不是拍脑袋改
进阶
如果代码段大、不放心 AI 一次改完,分两步:
- 第一轮 prompt 加:"不要写代码,先告诉我你打算做哪些改动,列清单。"
- 看清单 → 删掉你不同意的项 → 再让它执行剩下的
更安全。
一个真实场景
让 AI"提取一个重复的日期格式化逻辑成公共函数",最容易出的事故是它顺手把行为也改了:
- 原代码三处格式化里有一处用的是
YYYY-MM-DD,另两处是YYYY/MM/DD——AI 提取时"统一"成了一种,悄悄改了两处的输出。 - 原代码对 null 日期返回空字符串,AI 提取后改成返回
'Invalid Date'。
这两个改动单看都"更合理",但它们改变了可观测行为,可能让依赖旧格式的下游(前端展示、报表、其它服务)出问题。这条 prompt 的"铁律 1:不改变行为"和"看到 bug 也只报不修"就是专门拦这类"好心办坏事"。
大规模重构怎么办
这条 prompt 适合改一段代码。如果是跨文件、改接口签名的大重构,用 大规模安全重构 Prompt——它多了影响分析、测试基线、分步验证。
延伸阅读
- 大规模安全重构 Prompt · 测试生成 Prompt
- 大型重构的 AI Agent 工作流 — 完整的重构流水线