zh/03-skills/refactor/SKILL.md
基于 Martin Fowler 方法论的系统化代码重构 skill。适用于用户请求重构代码、改进代码结构、减少技术债、清理旧代码、消除 code smell 或提升可维护性时。这个 skill 采用分阶段、带研究与计划的安全增量实施方式。
npx skillsauth add luongnv89/claude-howto refactorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
这是一个基于 Martin Fowler《Refactoring: Improving the Design of Existing Code》(第 2 版)的系统化代码重构方法。这个 skill 强调安全、渐进的修改,并由测试提供保障。
“重构是在不改变软件外部行为的前提下,改进其内部结构的过程。” — Martin Fowler
阶段 1:研究与分析
↓
阶段 2:测试覆盖评估
↓
阶段 3:识别代码异味
↓
阶段 4:创建重构计划
↓
阶段 5:增量实施
↓
阶段 6:评审与迭代
开始前先确认:
向用户汇报:
“没有测试的重构,就像没有安全带就开车。” — Martin Fowler
测试是安全重构的关键前提。没有测试,很容易引入 bug。
检查现有测试
# 查找测试文件
find . -name "*test*" -o -name "*spec*" | head -20
运行现有测试
# JavaScript / TypeScript
npm test
# Python
pytest -v
# Java
mvn test
检查覆盖率(如果可用)
# JavaScript
npm run test:coverage
# Python
pytest --cov=.
如果测试存在且通过:
如果测试缺失或不完整: 给出选项:
如果测试失败:
对每个要重构的函数,测试应覆盖:
使用“红-绿-重构”循环:
代码深层问题的表面症状。它们不一定是 bug,但说明代码设计可能有问题。
完整目录见 references/code-smells.md。
| 异味 | 迹象 | 影响 | |-------|------|------| | 长函数 | 函数超过 30-50 行 | 难以理解、测试和维护 | | 重复代码 | 多处出现相同逻辑 | 修复需要改多处 | | 大类 | 类承担了太多职责 | 违反单一职责原则 | | Feature Envy | 一个方法更多依赖别的类的数据 | 封装性差 | | 基础类型沉迷 | 过度使用基础类型而不是对象 | 缺少领域概念 | | 长参数列表 | 方法参数超过 4 个 | 调用困难 | | 数据泥团 | 一组数据总是一起出现 | 缺少抽象 | | switch 语句 | 复杂的 switch / if-else 链 | 难以扩展 | | 臆想泛化 | “以防未来需要”提前设计 | 不必要的复杂度 | | 死代码 | 未使用的代码 | 造成困惑和维护负担 |
自动分析(如果有脚本)
python scripts/detect-smells.py <file>
人工审查
优先级排序 优先关注会:
向用户呈现:
针对每个异味,从目录中选择合适的重构手法。
完整列表见 references/refactoring-catalog.md。
| 代码异味 | 推荐重构 | |----------|----------| | 长函数 | Extract Method、Replace Temp with Query | | 重复代码 | Extract Method、Pull Up Method、Form Template Method | | 大类 | Extract Class、Extract Subclass | | Feature Envy | Move Method、Move Field | | 基础类型沉迷 | Replace Primitive with Object、Replace Type Code with Class | | 长参数列表 | Introduce Parameter Object、Preserve Whole Object | | 数据泥团 | Extract Class、Introduce Parameter Object | | switch 语句 | Replace Conditional with Polymorphism | | 臆想泛化 | Collapse Hierarchy、Inline Class、Remove Dead Code | | 死代码 | Remove Dead Code |
使用 templates/refactoring-plan.md 里的模板。
每项重构都要写明:
关键:重构必须分阶段推进。
阶段 A:快速收益(低风险,高价值)
阶段 B:结构改进(中风险)
阶段 C:架构改动(高风险)
在开始实施前:
“修改 → 测试 → 通过?→ 提交 → 下一步”
对每一步重构:
预检查
只做一个小改动
验证
如果测试通过(绿色)
如果测试失败(红色)
每次提交都应当:
示例提交信息:
refactor: 从 processOrder() 中提取 calculateTotal()
refactor: 将 'x' 重命名为 'customerCount' 以提升清晰度
refactor: 删除未使用的 validateOldFormat() 方法
每个子阶段完成后,向用户汇报:
重构前后运行复杂度分析:
python scripts/analyze-complexity.py <file>
展示改进:
向用户展示最终结果:
和用户讨论:
遇到以下情况时,务必暂停并和用户确认:
重构前:
function processOrder(order) {
// 150 行代码,包含:
// - 重复验证逻辑
// - 内联计算
// - 多种职责混杂
}
重构步骤:
processOrder()validateOrder()calculateOrderTotal()notifyCustomer()processOrder() 现在只负责串联 3 个清晰函数重构后:
function processOrder(order) {
validateOrder(order);
const total = calculateOrderTotal(order);
notifyCustomer(order, total);
return { order, total };
}
scripts/analyze-complexity.py - 分析代码复杂度指标scripts/detect-smells.py - 自动检测 code smelldevelopment
Comprehensive code review with security, performance, and quality analysis. Use when users ask to review code, analyze code quality, evaluate pull requests, or mention code review, security analysis, or performance optimization.
development
<!-- i18n-source: 03-skills/refactor/SKILL.md --> <!-- i18n-source-sha: 245272f --> <!-- i18n-date: 2026-04-27 --> --- name: refactor description: Martin Fowler の方法論に基づく体系的なコードリファクタリング。ユーザーがコードのリファクタリング、コード構造の改善、技術的負債の削減、レガシーコードのクリーンアップ、コードスメルの解消、コード保守性の向上を求めた際に使用する。本スキルは、リサーチ・計画・安全な段階的実装からなる段階的アプローチを案内する。 --- # コードリファクタリングスキル Martin Fowler 著『Refactoring: Improving the Design of Existing Code』(第 2 版) に基づくコードリファクタリングへの体系的アプローチ。本スキルは、テストに支えられた安全で段階的な変更を重視する。 > "Refactoring is the process of cha
development
<!-- i18n-source: 03-skills/doc-generator/SKILL.md --> <!-- i18n-source-sha: a6380d8 --> <!-- i18n-date: 2026-04-27 --> --- name: doc-generator description: ソースコードから包括的かつ正確な API ドキュメントを生成する。API ドキュメントの作成・更新、OpenAPI 仕様の生成時、または API ドキュメント、エンドポイント、ドキュメントについて言及がある場合に使用する。 --- # API ドキュメント生成スキル ## 生成するもの - OpenAPI/Swagger 仕様 - API エンドポイントのドキュメント - SDK 利用例 - 統合ガイド - エラーコード・リファレンス - 認証ガイド ## ドキュメント構造 ### 各エンドポイントごと ````markdown ## GET /api/v1/users/:id ### Description このエンドポイントの動作を簡潔に説明 ### Pa
development
<!-- i18n-source: 03-skills/claude-md/SKILL.md --> <!-- i18n-source-sha: f78c094 --> <!-- i18n-date: 2026-04-27 --> --- name: claude-md description: Create or update CLAUDE.md files following best practices for optimal AI agent onboarding --- ## ユーザー入力 ```text $ARGUMENTS ``` ユーザー入力が空でない場合、進める前に **必ず** 内容を考慮すること。ユーザーは以下を指定する場合がある: - `create` - 新しい CLAUDE.md をゼロから作成 - `update` - 既存 CLAUDE.md を改善 - `audit` - 現在の CLAUDE.md の品質を分析しレポート - 作成・更新する具体的なパス(例: ディレクトリ固有命令向けの `src/api/CLAUDE.md`) ## 基本原則