これまで扱ってきた switch → 戦略パターン → enum+戦略パターン → Map+ラムダ の手法を比較表に整理してみます。
条件分岐リファクタ手法の比較
| 手法 | 特徴 | メリット | デメリット | 適用場面 |
|---|---|---|---|---|
| switch文 | 値ごとに分岐 | シンプルで直感的、初心者にも分かりやすい | caseが増えると肥大化、フォールスルーの危険、責務集中 | 小規模な分岐、学習用コード |
| 戦略パターン | インターフェース+クラス分割 | 責務分離、拡張性高い、単体テスト容易 | クラス数が増える、やや冗長 | 大規模処理、複雑なロジック、外部連携 |
| enum+戦略パターン | enumに戦略を紐付け | 型安全、拡張容易、switch不要、状態管理に強い | enumに依存する設計になる | ステータス管理、権限管理、状態遷移 |
| Map+ラムダ | キーと処理をMapに登録 | 軽量、シンプル、追加容易、コード量少ない | 複雑処理には不向き、テスト分離しづらい | 小規模分岐、簡単な処理切替、ログ出力 |
選び方の指針
- 小規模・簡単な分岐 → switch文 or Map+ラムダ
- 中規模・複雑な処理 → 戦略パターン
- 状態管理やステータス制御 → enum+戦略パターン
- 拡張性・保守性を重視 → 戦略パターン/enum+戦略
実務での使い分け例
- 注文ステータス管理 → enum+戦略パターン(型安全で拡張性が高い)
- 支払い方法の処理 → 戦略パターン(外部サービス連携など複雑化しやすい)
- ログレベル出力 → Map+ラムダ(軽量で十分)
- 簡単なメニュー選択 → switch文(学習用や小規模ならOK)
👉 これで「どの場面でどの手法を選ぶべきか」が整理できました。
次のステップとして、実際の業務コードを題材に「どのリファクタ手法が最適か」を一緒に検討してみるとさらに理解が深まります。


