refactoring
Installation
SKILL.md
重构
在行为完全不变的前提下改善代码内部结构。对应先失败、再通过、后重构循环里的重构段:只在测试通过的基线上动作,从通过到通过。要消除的异味通常来自 code-review 报告或用户指认。
前置条件:安全网先行
- 确认测试或验证回路当前全部通过,且覆盖到要动的区域(搭回路的手法见 diagnosing-bugs 的阶段 1)。
- 覆盖不到的区域先补测试,再动结构。
- 补不出测试时分两种情况:
- 架构在挡(依赖不可注入、测试面太浅):能用重构手法解开的死结,先解开再补测试。
- 死结解不开:停下来,向用户报告缺口与原因。没有安全网的结构大改不是重构,不裸拆。
小步循环
一次只做一个重构动作(一次改名、一次搬移、一次抽取),做完立刻跑全部相关测试:
- 通过了:记录这一步(手法、文件、验证命令、结果),它可独立验证、可独立提交。然后开始下一个动作。
- 失败了:立刻回滚这一步,重做或换手法,绝不在失败的基础上叠改。
- 中途不新增功能、不改行为:发现该改的记下来,留给重构完成后的独立改动。功能与重构混在一起,测试失败了就分不清是谁的错。