SuperAPI AI 工具集

refactor-ops

编程与开发

查看项目

更新于 10-13 17:04

技能介绍

用途

Refactor Operations 是一个专注于“安全重构”的技能,用于在尽量不改变行为的前提下改进代码结构。它同时覆盖重构决策、执行方法、安全校验和死代码清理。

主要能力

1. 重构决策树

技能以决策树形式组织常见重构场景,帮助判断应使用哪种模式:

  • 提取代码为新单元:提取函数/方法(识别输入参数与返回值)、提取组件(React、Vue、Svelte,将 JSX/模板与相关状态移入新文件)、提取 Hook/Composable(复用有状态逻辑)、提取模块(文件超过 300-500 行时按职责拆分并使用 barrel exports,注意循环依赖)、提取类/服务(遵循单一职责,使用依赖注入)、提取配置(魔法数字、硬编码字符串、环境相关值、特性开关)。
  • 为清晰而重命名:重命名变量/函数/方法(更新所有引用,可用 IDE 重命名或 ast-grep)、重命名文件+更新导入(使用 git mv 保留历史)、重命名模块/包并更新所有使用方(可考虑临时从旧名再导出)。
  • 移动到更好的位置:函数/类移到不同文件(从原位置再导出一个发布周期)、文件移到不同目录、整体目录重组(增量迁移,保持测试通过)。
  • 简化现有代码:内联函数、内联变量、卫语句与提前返回(反转条件)、分解复杂条件式。
  • 删除死代码:未使用导入(lint 自动修复)、不可达分支(静态分析+人工复核)、孤立文件(依赖图分析,如 knip、ts-prune、vulture)、未使用导出。

2. 安全检查清单

  • 重构前:完整测试套件全部通过、工作树干净、使用专用分支、基线分支 CI 通过、理解代码实际行为、为未测试代码编写特征测试。
  • 重构中:每次提交都能编译且测试通过、提交小而聚焦(一次重构一次提交)、不混入行为变更、每次修改后运行测试(可用 --watch)。
  • 重构后:完整测试通过、无新增 lint/类型警告、请求代码评审、性能基准不变(如适用)、更新文档(如公共 API 变化)。

3. 提取、重命名、移动速查表

提供模式/场景与关键注意事项对照,例如提取函数的命名应描述“做什么”而非“怎么做”,提取组件的 props 接口应最小化,提取 Hook/Composable 必须以 use 开头并返回稳定引用,提取模块应一模块一职责,重命名时注意字符串引用、序列化数据、测试/storybook/配置文件中被遗漏的导入路径等。

4. 死代码检测工作流

  • 自动检测:TypeScript/JavaScript 使用 knip、ts-prune、eslint;Python 使用 vulture、ruff、coverage.py;Go 使用 staticcheck/golangci-lint;Rust 使用编译器警告。文档给出具体命令。
  • 人工验证:检查是否通过反射/动态导入使用、是否为外部消费的公共 API、是否被脚本/测试/工具使用、是否在特性开关或 A/B 测试之后。
  • 有把握地删除:小批量删除、一组死代码一次提交、保留 git 历史。

5. 代码异味检测

列出常见异味与启发式及对应重构方式:长函数、上帝对象、依恋情结、重复代码、深层嵌套、基本类型偏执、霰弹式修改、死代码、数据泥团、长参数列表。

6. 测试驱动重构方法论

针对未测试代码:先写特征测试捕获“当前行为”(作为安全网而非正确性证明)、验证覆盖率、小步重构并每次运行测试、之后改进为意图清晰的测试、分开提交测试与重构以便评审。

7. 工具参考与常见陷阱

工具表涵盖 ast-grep、jscodeshift、eslint --fix、ruff、goimports、clippy、knip、ts-prune、vulture、rope、IDE 重命名、sd,并给出命令。常见陷阱表覆盖:重构与行为变更混在同一提交、内部重构破坏公共 API、提取模块后出现循环依赖、测试通过但运行时失败、文件移动后丢失 git 历史、重命名遗漏字符串引用、过早抽象、提取耦合代码、死代码删除破坏反射/插件、提取后性能回退、大型重构 PR 产生合并冲突、移动文件后类型错误等。

使用方式

技能以决策树、清单和速查表为入口,按场景选择重构模式;结合 references 目录下的参考文件(提取模式、代码异味、安全方法论)以及测试、结构搜索、调试、代码统计、迁移、git 等配套技能协同使用。

适用场景

适用于需要对既有代码进行结构化调整、消除重复、拆分过大文件或类、清理死代码、重命名或移动符号与文件、并在测试保护下确保行为不变的重构任务。

限制

资料未说明具体支持的平台、收费方式与价格信息。