AI工具 Skill技能库 关于道场

AI代码重构技能:安全重构的执行纪律与小步原子提交规范

一人堂 |2026-08-20

在计划重构、代码有异味或需要调整结构而不改变行为时使用。包括重构前立测试基线、小步原子提交纪律(每次只做一种变换)、大规模改动前先用grep确认影响范围、不顺手修bug不混在重构里。适用于AI编程助手代码优化、遗留代码重构、技术债务清理场景。

【适用场景】

什么时候用这个技能?

当你想重构代码、改善结构或消除代码异味,但又不想改变现有行为时,这个技能提供安全可控的重构流程。

典型场景包括:

- AI编程助手代码优化:让AI在保持功能不变的前提下改善代码结构 - 遗留代码重构:在不对现有功能造成风险的情况下逐步改善代码质量 - 技术债务清理:系统性地消除代码异味而不引入新问题 - 代码审查后整改:根据审查意见优化代码结构

这个技能解决什么问题?

重构中的典型问题:改了代码但引入了新bug、修改后行为发生了变化但没发现、重构范围蔓延导致风险不可控。这个技能通过立测试基线和原子提交原则,确保每次重构都是安全的、可回滚的。


【操作步骤】

重构前:立测试基线

Step 1:运行现有测试

在开始重构之前,先跑一遍现有测试,确认全部通过——这是你的安全网。

```bash npm test # 或项目对应的测试命令 ```

Step 2:没有测试的模块先补测试

如果被重构的模块没有测试,先补关键路径测试,确保重构后有参照。

Step 3:记录重构意图

明确重构的目标:这次重构是为了解决什么问题?

记住:重构目标是行为不变,任何行为变化都算新需求,应该另开一个任务处理。

重构中:执行纪律

小步原子提交

每次重构只做一种变换

- 重命名变量/函数 - 提取一段代码为独立函数 - 调整代码顺序

每步完成后跑测试,确认测试通过再进行下一步。

先机械化后设计

先用工具级别的重构(IDE的重命名、提取函数等功能),再考虑更高层次的设计调整。

确认影响范围

在大规模改动之前,先用grep确认影响范围:

```bash grep -r "函数名" --include=".py" --include=".js" ```

不顺手修bug、不改格式

重构过程中如果发现了其他问题,记下来但不要在这次重构里处理——混在一起就无法回滚。

重构后:收尾自查

对照重构目标逐条检查是否完成。

用git diff通读改动,确认没有意外的行为变化。

关键行为手工验证一次,不能只看测试结果。


【代码模板】

重构前检查清单

``` [ ] 运行现有测试,全部通过 [ ] 为没有测试的模块补充关键路径测试 [ ] 明确重构目标,写下来 [ ] 确认重构范围,不超过本次目标 ```

原子提交日志模板

每次重构提交应该包含:

``` 类型: 重构 描述: [重命名/提取函数/调整顺序] 目标函数/变量 影响: 受影响文件列表 验证: 现有测试通过 + 手工验证结果 ```

影响范围确认命令

```bash

查找函数/变量引用

grep -rn "targetFunction" --include="*.py"

查找文件引用

find . -name "*.py" -exec grep -l "TargetClass" {}

查看改动统计

git diff --stat ```

收尾自查清单

``` [ ] 重构目标逐条完成 [ ] 现有测试全部通过 [ ] git diff 无意外改动 [ ] 关键行为手工验证通过 ```


【复盘要点】

常见错误

错误正确做法
不立测试基线就开始重构先跑测试确认安全网存在
一次重构做多种变换每次只做一种变换,原子提交
顺手修发现的bug记下来,下次另开任务处理
改了格式混在重构里格式调整单独做,不在重构里混
不确认影响范围就动手先grep确认影响面,再开始

什么时候不能重构?

- 测试全部失败:先修测试,而不是重构 - 关键功能马上要发布:发布后再重构 - 团队对重构目标没有共识:先讨论清楚再动手

重构与新功能的边界

如果重构过程中发现需要加入新功能:

1. 先完成重构(保持行为不变) 2. 用新commit添加新功能 3. 不要在重构里混新功能


来源:GitHub hackerFish/awesome-dsh-skills 来源URL:https://github.com/hackerFish/awesome-dsh-skills/blob/main/skills/dsh-refactor-safe/SKILL.md