SuperAPI AI 工具集

refactor

编程与开发

查看项目

更新于 10-16 04:06

技能介绍

用途

refactor 是一个代码重构技能,属于 han-core 技能集,命令形式为 /refactor [arguments]。它的目标是在不改变代码外部行为的前提下,改善代码结构与质量。技能强调:重构不是添加功能或修复缺陷,而是让代码更易读、易改、易测。

主要能力

该技能围绕“测试驱动的安全重构”提供一整套方法:

  • 重构循环:确保测试存在且通过 → 做一处小改动 → 运行测试(必须仍通过)→ 提交(保持改动隔离)→ 重复。每一步都必须可回退,测试失败则回退并尝试更小的改动。
  • 重构前检查清单:测试存在、测试当前全部通过、理解代码作用、外部行为保持不变、有充足时间。若任一条件不满足则停止。若无测试,应先补测试并验证通过,然后再重构。
  • 识别代码坏味道:可读性问题(长函数 > 50 行、嵌套 > 3 层、命名不清、魔法数字、复杂条件);可维护性问题(重复、上帝类、特性依恋、数据泥团);复杂性问题(圈复杂度 > 10、依赖过多、紧耦合、难以测试)。
  • 不适合重构的场景:无测试、赶工期、代码可读且工作正常(避免过度工程)、要改变外部行为(那是功能或修复)、发布前(风险过高)。
  • 经典重构手法(附前后对比代码):提取函数、提取变量、内联函数/变量、重命名、用命名常量替换魔法数字、消除重复、简化条件、用多态替换条件、拆分函数。
  • 重构黄金法则:安全第一,测试先行,一次一改,每改必测,行为不变,每次成功重构后提交。
  • 重构工作流:运行测试 → 做一处重构 → 立即运行测试 → 提交(如 git commit -m "refactor: extract validateOrder function")→ 重复。测试失败时可回退(git reset --hard HEAD)或调试修复。
  • 重构策略:童子军规则(让代码比发现时更好)、预备性重构(先让改动变容易,再做容易的改动)、机会性重构(顺手清理)、计划性重构(专门时间处理技术债)。
  • 安全检查清单:每次改动前确认测试存在且通过、理解代码;改动后确认测试仍通过、功能未变、代码更清晰、可提交;测试失败时理解原因并修复或回退,绝不提交失败测试。
  • 常见陷阱:无测试重构、一次改动过多、改变行为、过度工程、压力下重构。
  • 成功衡量:更易理解、更易修改、更易测试、通常代码行数更少、复杂度更低、性能相同或更好、所有测试仍通过。任一测试失败即不算成功重构。
  • 输出格式:重构后按模板输出,包括重构简述、重构前问题、所做改动及理由、重构后改善、验证证据(测试输出等)。
  • 触发示例:当用户说“这个函数太长难懂”“清理这段乱代码”“消除模块间重复”“简化嵌套 if/else”“把上帝类拆小”等。
  • 工具建议:IDE 重构命令(重命名、提取方法、移动文件等安全操作);手动重构时小步改动、频繁测试、每次提交、用版本控制作安全网。
  • 与其他技能集成:boy-scout-rule、simplicity-principles、solid-principles、structural-design-principles、test-driven-development、proof-of-work、code-review。

使用方式

以技能命令 /refactor [arguments] 调用。典型流程为:先运行测试确保全绿,然后做一处小重构,立即再运行测试,通过后提交,循环进行。技能文档中给出的命令示例包括 npm test、git add .、git commit -m "refactor: extract validateOrder function"、git reset --hard HEAD。

适用场景

适用于需要改善既有代码结构、消除重复、简化复杂逻辑、拆分过长函数或上帝类、提升可读性与可维护性的开发场景,尤其适合已有测试覆盖的代码库。

限制

技能明确要求:没有测试就不应重构,应先补测试;行为一旦改变就不属于重构;发布前、赶工期、代码已可读且正常工作时不宜重构;避免过度工程。关于该技能的具体收费、价格、支持平台等信息,资料中暂未提供。