| name | refactor-advisor |
| description | 重构顾问 - 识别代码坏味道并提供重构方案 |
代码重构顾问
触发条件
当用户要求重构代码、优化代码结构、改善代码质量、消除技术债务时激活此技能。
工作流程
第 1 步:扫描代码库
- 使用
grep/rg 扫描目标目录,识别潜在坏味道
- 统计文件行数、函数长度、参数数量等指标
- 查找重复代码块(相似度 > 80%)
第 2 步:分类坏味道
按严重程度分类发现的问题:
| 等级 | 含义 | 说明 |
|---|
| 🔴 严重 | 必须立即修复 | 影响可维护性和稳定性 |
| 🟡 中等 | 建议尽快修复 | 降低代码可读性 |
| 🟢 轻微 | 可择机优化 | 不影响功能但有改进空间 |
第 3 步:优先级排序
按以下维度综合排序:
- 影响范围 — 被引用/调用次数越多,优先级越高
- 变更频率 — git log 频繁改动的文件优先
- 修复成本 — 成本低且收益高的优先处理
第 4 步:输出重构方案
常见坏味道检测
| 坏味道 | 特征 | 重构手法 | 等级 |
|---|
| 长方法 | 函数超过 50 行 | 提取方法 (Extract Method) | 🔴 |
| 大类 | 类超过 300 行 | 提取类 (Extract Class) | 🔴 |
| 重复代码 | 相似代码块出现 3+ 次 | 提取公共方法 | 🔴 |
| 过长参数 | 函数参数超过 4 个 | 引入参数对象 | 🟡 |
| 嵌套过深 | if/for 嵌套 3+ 层 | 卫语句 (Guard Clause) | 🟡 |
| 魔法数字 | 硬编码的数字 | 提取为常量 | 🟢 |
| 过长链式调用 | a.b.c.d.e | 提取中间变量 | 🟢 |
| 全局可变状态 | 全局变量被多处修改 | 封装为模块/引入依赖注入 | 🔴 |
| 过度耦合 | 模块间相互依赖 | 依赖反转、引入接口 | 🟡 |
输出格式
完整报告模板
# 代码重构报告
## 概要
- 扫描文件数:XXX
- 发现问题数:XX(🔴 X / 🟡 X / 🟢 X)
- 预估工作量:X 天
## 问题列表
### 问题 1:[问题标题]
- **📍 位置**:`src/services/user.ts:45-120`
- **🔍 问题**:该函数长达 75 行,包含 3 层嵌套,职责不单一
- **🛠️ 重构方案**:
- 提取 `validateUserData()` 方法
- 提取 `saveToDatabase()` 方法
- 使用卫语句替代嵌套 if
- **⚠️ 风险评估**:
- 该函数被 12 处调用,需全面回归测试
- 建议先添加单元测试再重构
- **Before**:
```typescript
function processUser(data) { /* 75行... */ }
重构路线图
| 阶段 | 内容 | 优先级 | 预估 |
|---|
| P1 | 修复 🔴 严重问题 | 高 | 2天 |
| P2 | 处理 🟡 中等问题 | 中 | 3天 |
| P3 | 优化 🟢 轻微问题 | 低 | 1天 |
## 注意事项
- 重构前确保有足够的测试覆盖
- 每次重构尽量小步提交,便于回滚
- 重构不应改变外部行为(行为保持)
- 大规模重构建议分阶段进行,每阶段独立可验证
- 关注重构过程中的性能回退风险