SuperAPI AI 工具集

refactor

编程与开发

查看项目

更新于 10-20 01:16

技能介绍

refactor 是一个代码重构技能,用于在不改变现有行为的前提下改进代码质量。它把测试套件视为行为契约:重构前后测试都必须通过;若必须改变某个测试的含义,说明重构越界。

用途与目标:处理对象由参数指定,可以是文件、目录或模块;参数为空时,默认处理未暂存的改动。常见触发场景包括被要求“重构”“让代码更健壮”“加固”等。

工作流程:

  1. 界定范围:确定目标文件,并按项目约定定位每个文件的测试(就近放置、tests/、tests/、spec/ 等)。没有测试的文件先列入“测试缺口”项,因为对未测试代码拆分或化简无法验证,需先回填测试或跳过。若完全没有测试运行器,则询问使用哪一个;涉及 UI 流程时回填端到端测试(调用 tdd 技能,其中含 UI 测试参考)。没有导出的入口脚本只做审计。随后运行测试套件,若失败则停止,不重构已损坏的代码。
  2. 审计:按影响从大到小列出发现,分为四类——拆分(超过 20 行的函数、多重职责、I/O 与逻辑混杂:提取纯逻辑为命名辅助函数,I/O 留在边缘,保留原签名)、边界情况(系统边界缺少空值/空/边界检查、未处理错误路径:先写测试再加防护)、测试缺口(未测试的公开函数、未覆盖分支、缺少异常路径测试:通过公共接口回填)、化简(嵌套超过 2 层、死代码与未用参数、重复逻辑、密集单行、浅层透传包装、从未使用的推测性配置、命名不清或原始类型偏执:用守卫子句、删除、提取一个辅助函数、展开、内联(调用 codebase-design 技能做删除测试)、移除、按意图重命名或引入小类型)。
  3. 应用:一次只处理一项。对已批准项,若该项增加行为覆盖,先写暴露缺口的失败测试(RED),再做最小修改(GREEN),然后运行测试。优先使用真实值而非模拟,只模拟外部 I/O。若修改后测试失败则回滚并标记为阻塞,绝不批量处理。
  4. 报告:列出已处理项、新增测试、提取的函数、跳过项及原因,以及修改前后的测试套件结果。

适用场景:已有测试覆盖的存量代码库的结构性改进、加固边界处理、补充测试、降低复杂度。限制:测试红色时不允许重构;未测试代码不可直接拆分或化简;无导出的入口脚本只能审计;删除任何内容前须先说明其存在原因(切斯特顿栅栏原则),说不清则保留并标记。具体支持的编程语言、与哪些测试框架深度集成、价格与平台信息暂未提供。