---
name: laolaoshiren/refactor-advisor
source: https://app.decimal.ai/s/laolaoshiren-refactor-advisor@1/SKILL.md
source_sha256: 3097e4ad023f
---

# 代码重构顾问

## 触发条件
当用户要求重构代码、优化代码结构、改善代码质量、消除技术债务时激活此技能。

## 工作流程

### 第 1 步：扫描代码库
- 使用 `grep`/`rg` 扫描目标目录，识别潜在坏味道
- 统计文件行数、函数长度、参数数量等指标
- 查找重复代码块（相似度 > 80%）

### 第 2 步：分类坏味道
按严重程度分类发现的问题：

| 等级 | 含义 | 说明 |
|------|------|------|
| 🔴 严重 | 必须立即修复 | 影响可维护性和稳定性 |
| 🟡 中等 | 建议尽快修复 | 降低代码可读性 |
| 🟢 轻微 | 可择机优化 | 不影响功能但有改进空间 |

### 第 3 步：优先级排序
按以下维度综合排序：
1. **影响范围** — 被引用/调用次数越多，优先级越高
2. **变更频率** — git log 频繁改动的文件优先
3. **修复成本** — 成本低且收益高的优先处理

### 第 4 步：输出重构方案

## 常见坏味道检测

| 坏味道 | 特征 | 重构手法 | 等级 |
|--------|------|---------|------|
| 长方法 | 函数超过 50 行 | 提取方法 (Extract Method) | 🔴 |
| 大类 | 类超过 300 行 | 提取类 (Extract Class) | 🔴 |
| 重复代码 | 相似代码块出现 3+ 次 | 提取公共方法 | 🔴 |
| 过长参数 | 函数参数超过 4 个 | 引入参数对象 | 🟡 |
| 嵌套过深 | if/for 嵌套 3+ 层 | 卫语句 (Guard Clause) | 🟡 |
| 魔法数字 | 硬编码的数字 | 提取为常量 | 🟢 |
| 过长链式调用 | a.b.c.d.e | 提取中间变量 | 🟢 |
| 全局可变状态 | 全局变量被多处修改 | 封装为模块/引入依赖注入 | 🔴 |
| 过度耦合 | 模块间相互依赖 | 依赖反转、引入接口 | 🟡 |

## 输出格式

### 完整报告模板

```markdown
# 代码重构报告

## 概要
- 扫描文件数：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行... */ }
  ```
- **After**：
  ```typescript
  function processUser(data) {
    const validated = validateUserData(data);
    return saveToDatabase(validated);
  }
  ```

## 重构路线图
| 阶段 | 内容 | 优先级 | 预估 |
|------|------|--------|------|
| P1 | 修复 🔴 严重问题 | 高 | 2天 |
| P2 | 处理 🟡 中等问题 | 中 | 3天 |
| P3 | 优化 🟢 轻微问题 | 低 | 1天 |
```

## 注意事项
- 重构前确保有足够的测试覆盖
- 每次重构尽量小步提交，便于回滚
- 重构不应改变外部行为（行为保持）
- 大规模重构建议分阶段进行，每阶段独立可验证
- 关注重构过程中的性能回退风险