← ClaudeAtlas

refactoringlisted

既存コードの可読性 · 保守性 · テスト容易性 · パフォーマンスを改善するリファクタリングを、安全に進める手順を提供する。
Saigetsu233/harness-jp-si · ★ 0 · Code & Development · score 60
Install: claude install-skill Saigetsu233/harness-jp-si
# リファクタリング支援スキル ## 1. 大原則 1. **テストを先に整える**。テスト無しのリファクタは禁止。 2. **小さく · こまめに** 変更する(1 PR 1 リファクタ単位)。 3. **挙動を変えない**。仕様変更が混入したら CR 起票。 4. **計測してから判断する**(性能改善は推測でなく実測で)。 5. **後方互換性を保つ**。外部 API · 公開関数のシグネチャ変更には CR 必須。 --- ## 2. 手順 ### Step 1:現状把握 - 対象モジュールの **責務** · **依存関係** · **使われ方** を把握。 - 既存テストのカバレッジを確認(不足ならテスト追加が先)。 - 過去の改修履歴(git log)から **触りにくい理由** を察知。 ### Step 2:問題の特定 代表的な「コードの臭い」(`code smell`)を観点別にチェック: | 観点 | 臭い | リファクタ手段 | | --- | --- | --- | | 構造 | God Class(巨大クラス) | クラス分割 · ドメイン抽出 | | 構造 | Long Method(巨大メソッド) | Extract Method | | 重複 | Duplicate Code | Extract Function · 共通化 | | 結合度 | Feature Envy(他クラスのフィールド多用) | Move Method | | 凝集度 | Data Class(データだけ��クラス) | 振る舞いを移動 | | 抽象化 | Magic Number / String | 定数化 | | 抽象化 | Switch on Type | ポリモーフィズム化 | | テスト | Hidden Dependency | DI · インターフェース化 | | 可読性 | 不明瞭な命名 | 改名 | | 可読性 | 深いネスト | Guard Clause / Early Return | | 性能 | N+1 / 大量メモリ | クエリ改善 · ストリーミング | ### Step 3:段階的計画 リファクタは **1 PR 1 トピック**。複数の臭いを 1 PR に詰めない。 例: ``` Phase 1: テスト追加(カバレッジ 50% → 85%) Phase 2: God Class を 3 クラスに分割(PR #1) Phase 3: Magic Number を Enum に置換(PR #2) Phase 4: 深いネストを Guard Clause で平坦化(PR #3) Phase 5: 性能改善(実測 → クエリ修正)(PR #4) ``` ### Step 4:実装 各 PR で: 1. テストを先に green に保つ。 2. **小さく commit**(1 commit = 1 機械的変換)。 3. 名前変更 · メソッド抽出 等の **機械的リファクタ** は IDE 機能を活用。 4. 都度テスト実行。 ### Step 5:検証 - ✅ 既存テストが全件通る。 - ✅ カバレッジが下がっていない。 - ✅ 静的解析エラーが増えていない。 - ✅ 性能リファクタの場合、ベンチマークで改善を確認。 - ✅ 仕様変更が混入していない(PR Description に「挙動変更なし」と明記)。 --- ## 3. リファクタ提案フォーマット ```mar