SuperAPI AI 工具集

refactor

编程与开发

查看项目

更新于 10-15 10:24

技能介绍

用途

Refactor 是一个代码重构技能,用于在保持现有行为不变的前提下改进代码结构。其核心原则是“只改结构、不改行为”,并强调每次重构都应能通过现有测试验证;如果没有测试,应先编写测试。当用户提出“refactor this”等重构请求时使用。

主要能力

1. 重构前分析

在改动任何代码之前,先理解当前状态:读取并梳理代码、查找依赖关系(谁导入了该文件、该文件导入了什么)、检查现有测试、度量当前复杂度(函数行数、文件行数、嵌套深度)、验证测试覆盖率。技能特别强调:如果被重构的代码没有测试覆盖,第一步是添加捕获当前行为的特征测试,绝不要重构未经测试的代码。

2. 代码异味检测

按严重程度分组扫描常见代码异味:

  • 严重异味(优先重构):长函数/方法、上帝类/上帝模块、深层嵌套代码、重复代码、基本类型偏执。
  • 警告级异味(尽快重构):特性依恋、过长参数列表、switch/if-else 链、布尔盲视、魔法数字与字符串、死代码。
  • 轻微异味(方便时重构):命名不一致、本应写成代码的注释、过于复杂的条件判断。

每种异味都给出了症状、检测方式和重构前后的代码示例。

3. 重构技术

提供多种具体重构手法,包括:提取函数、提取类/模块、用多态替换条件判断、引入参数对象、用卫语句替换嵌套条件、分解条件表达式、用查询替换临时变量、移动函数/字段。每种手法都配有“何时使用”的说明和前后对比示例。

4. 语言栈特定模式

针对 TypeScript/JavaScript 和 Python 等语言栈给出具体重构模式,例如:用接口替换 any 类型、回调转 async/await、类组件转函数组件加 hooks、提取自定义 hooks、var 转 const/let、CommonJS 转 ES 模块、字符串枚举转 as const 对象或 TypeScript 枚举、提取验证 schema、嵌套 .then() 链转 async/await、使用可选链和空值合并等。

使用方式

该技能以结构化流程引导重构:先做重构前分析并建立测试基线,再检测代码异味,然后应用相应重构技术,最后针对具体语言栈采用对应模式。资料中提供了大量命令行示例(如 grep、find、awk、npm test、pytest、go test 等)用于分析依赖、检测异味和验证覆盖率。

适用场景

适用于需要改进现有代码结构、消除代码异味、提升可维护性的场景,尤其适合在已有测试保护下进行安全重构。

限制

资料未提供该技能的安装方式、收费信息、支持平台或具体效果数据,这些事实暂未提供。