Refactoring Skill
Scope: EXECSPEC_FULFILL — Fulfill ExecSpec(落实 ExecSpec)
版本: 0.1.0(占位)| 创建日期: 2025-11-27
概述
Refactoring 是在不改变外部行为的前提下改进代码内部结构:
code
┌─────────────────────────────────────────────────────┐ │ 🔧 Refactoring Cycle │ ├─────────────────────────────────────────────────────┤ │ 识别坏味道 → 选择手法 → 小步修改 → 运行测试 │ │ (Smell) (Technique) (Small Step) (Verify) │ │ ↑ │ │ │ └───────────────────────────────────┘ │ └─────────────────────────────────────────────────────┘
核心原则:
- •小步前进,每步都可验证
- •测试必须始终通过
- •行为不变,结构改进
代码坏味道
常见坏味道
| 坏味道 | 信号 | 重构方向 |
|---|---|---|
| 重复代码 | 相似代码块 > 2 处 | Extract Method |
| 过长函数 | > 20 行 | Extract Method |
| 过大类 | > 300 行 | Extract Class |
| 过长参数 | > 4 个参数 | Introduce Parameter Object |
| 特性依恋 | 方法更多使用其他类数据 | Move Method |
| 数据泥团 | 相同数据组合多处出现 | Extract Class |
| 基本类型偏执 | 过度使用基本类型 | Replace with Object |
| Switch 语句 | 多处相同 switch | Replace with Polymorphism |
重构手法
提取类手法
code
Extract Method → 提取函数 Extract Class → 提取类 Extract Interface → 提取接口 Extract Variable → 提取变量
移动类手法
code
Move Method → 移动方法 Move Field → 移动字段 Move Class → 移动类
简化类手法
code
Inline Method → 内联方法 Inline Class → 内联类 Remove Parameter → 移除参数 Rename → 重命名
L1-STREAMLINED 检查清单
- • 重构前测试全绿
- • 每步修改后运行测试
- • 无新功能添加
- • 代码可读性提升
通过标准
- •4 项全部通过(100%)
重构流程
1. 准备阶段
code
□ 确保测试覆盖充分 □ 理解现有代码行为 □ 识别要重构的坏味道
2. 执行阶段
code
□ 选择合适的重构手法 □ 小步修改(每步 < 5 分钟) □ 每步后运行测试 □ 提交小步变更
3. 验证阶段
code
□ 所有测试通过 □ 代码结构改善 □ 无行为变化
>> 命令
code
>>smell_detect # 检测代码坏味道 >>refactor_suggest # 建议重构手法 >>refactor_verify # 验证重构结果
相关 Skills
- •前置: tdd-cycle(GREEN 后进入 REFACTOR)
- •并行: code-quality(质量检查)
- •原则: principle-dry, principle-kiss, principle-solid
TODO: 待细化各重构手法的详细步骤和示例