refactor について
FowlerのリファクタリングカタログとClean Codeの原則に基づく、AIエージェントとLLM向けのリファクタリング指針です。構造、依存関係、命名、条件分岐などを扱う43項目を優先度順にまとめています。
主な機能
- 018カテゴリの43項目
- 02優先度付きの指針
- 03構造と分解の実践方法
- 04依存関係と結合の指針
- 05解説と例を含む個別資料
活用シーン
- 01長いメソッドや大きなクラスの分割
- 02コンポーネント間の結合低減
- 03入れ子になった条件分岐の簡素化
- 04コードスメルやアンチパターンの確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill refactorインストール後、Claude Code で/refactorを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
AGENTS.mdmetadata.jsonREADME.mdassets/templates/_template.mdreferences/_sections.mdcond-consolidate.mdcond-decompose.mdcond-guard-clauses.mdcond-lookup-table.mdcond-polymorphism.mdcond-special-case.mdcouple-dependency-injection.mdcouple-feature-envy.mdcouple-hide-delegate.mdcouple-interface-segregation.mdcouple-preserve-whole-object.mdcouple-remove-middle-man.mddata-encapsulate-collection.mddata-encapsulate-record.mddata-replace-primitive.mddata-replace-temp-with-query.mddata-split-variable.mderror-custom-exceptions.mderror-exceptions-over-codes.mderror-fail-fast.mderror-separate-concerns.mdmicro-inline-variable.mdmicro-remove-dead-code.mdmicro-rename-for-clarity.mdmicro-simplify-expressions.md詳細
Fowler/Martin のコードリファクタリングのベストプラクティス
Martin Fowler のカタログと Clean Code の原則に基づく、包括的なコードリファクタリングガイドです。AI エージェントと LLM 向けに設計されています。8 つのカテゴリにわたる 43 のルールを収録し、影響度順に優先順位を付けて、自動リファクタリングとコード生成を導きます。
適用するタイミング
以下の場合に、このガイドラインを参照してください。
- 保守性を高めるために既存のコードをリファクタリングするとき
- 長いメソッドや大きなクラスを分解するとき
- コンポーネント間の結合を減らすとき
- 複雑な条件分岐を簡素化するとき
- コードの臭いやアンチパターンについてコードレビューするとき
優先度別のルールカテゴリ
| 優先度 | カテゴリ | 影響度 | プレフィックス |
|---|---|---|---|
| 1 | 構造と分解 | 重大 | struct- |
| 2 | 結合と依存関係 | 重大 | couple- |
| 3 | 命名と明確さ | 高 | name- |
| 4 | 条件分岐 | 高 | cond- |
| 5 | 抽象化とパターン | 中〜高 | pattern- |
| 6 | データ構成 | 中 | data- |
| 7 | エラー処理 | 中 | error- |
| 8 | マイクロリファクタリング | 低 | micro- |
クイックリファレンス
1. 構造と分解(重大)
struct-extract-method- 長い関数をメソッドとして抽出するstruct-single-responsibility- 単一責任の原則を適用するstruct-extract-class- 大きなクラスからクラスを抽出するstruct-compose-method- 読みやすい処理の流れになるようメソッドを構成するstruct-function-length- 関数を 20 行未満に保つstruct-replace-method-with-object- メソッドをメソッドオブジェクトに置き換えるstruct-parameter-object- パラメーターオブジェクトを導入する
2. 結合と依存関係(重大)
couple-dependency-injection- 依存性注入を使用するcouple-hide-delegate- 委譲先を隠して結合を減らすcouple-remove-middle-man- 過剰な場合は仲介役を取り除くcouple-feature-envy- メソッドを移動してフィーチャーエンビーを解消するcouple-interface-segregation- インターフェース分離の原則を適用するcouple-preserve-whole-object- フィールドではなくオブジェクト全体を渡す
3. 命名と明確さ(高)
name-intention-revealing- 意図が伝わる名前を使用するname-avoid-abbreviations- 略語や頭字語を避けるname-consistent-vocabulary- 一貫した用語を使用するname-searchable-names- 検索しやすい名前を使用するname-avoid-encodings- 名前に型のエンコーディングを含めない
4. 条件分岐(高)
cond-guard-clauses- ネストした条件分岐をガード節に置き換えるcond-polymorphism- 条件分岐をポリモーフィズムに置き換えるcond-decompose- 複雑な条件分岐を分解するcond-consolidate- 重複する条件分岐の断片を統合するcond-special-case- 特殊ケースオブジェクトを導入するcond-lookup-table- 条件分岐をルックアップテーブルに置き換える
5. 抽象化とパターン(中〜高)
pattern-strategy- アルゴリズムのバリエーションに応じてストラテジーを抽出するpattern-template-method- 共通の骨格にテンプレートメソッドを使用するpattern-factory- 複雑なオブジェクト生成にファクトリーを使用するpattern-open-closed- 開放/閉鎖原則を適用するpattern-composition-over-inheritance- 継承よりコンポジションを優先するpattern-extract-superclass- 共通の振る舞いを持つスーパークラスを抽出する
6. データ構成(中)
data-encapsulate-collection- コレクションをカプセル化するdata-replace-primitive- プリミティブ型をオブジェクトに置き換えるdata-encapsulate-record- レコードをクラスにカプセル化するdata-split-variable- 複数回代入される変数を分割するdata-replace-temp-with-query- 一時変数をクエリに置き換える
7. エラー処理(中)
error-exceptions-over-codes- エラーコードではなく例外を使用するerror-custom-exceptions- ドメイン固有の例外型を作成するerror-fail-fast- 事前条件を設けて早期に失敗させるerror-separate-concerns- エラー処理をビジネスロジックから分離する
8. マイクロリファクタリング(低)
micro-remove-dead-code- デッドコードを削除するmicro-inline-variable- 単純な変数をインライン化するmicro-simplify-expressions- ブール式を簡素化するmicro-rename-for-clarity- 明確さを高める名前に変更する
使用方法
詳しい説明とコード例については、各リファレンスファイルを参照してください。
- セクションの定義 - カテゴリーの構造と影響レベル
- ルールのテンプレート - 新しいルールを追加するためのテンプレート
- 個別のルール:
references/{prefix}-{slug}.md
完全版ドキュメント
すべてのルールを展開した完全なガイドについては、AGENTS.mdを参照してください。
コメント
Markdown 対応