リファクタリング技法
ここではCode Smellを解消するために参考となるリファクタリング技法や、その他参考になりそうな概念を紹介していこうと思います。
リファクタリングに関してはこの辺りの書籍が参考になると思います。
リファクタリング第2版

レガシーコード改善ガイド

Dealing with Generalisation
Extract Subclass
特定の場合にのみ使用される機能がクラスにある場合、サブクラスを作成してその機能を使用します。
注意すべき点として、サブクラスを作ることが必ずしもコードの複雑性を回避する手段になるとは限りません。継承は使いどころを間違えると大変なことになるのでコンポジションを使うべきところと明確に分けて考えましょう。
※継承とコンポジションの違いについてはこの辺が参考になると思います。
- 継承とコンポジションをどう使い分けるか
- Effective Java 16章「継承よりコンポジションを選ぶ」
- 【Effective Java】項目16:継承よりコンポジションを選ぶ
- クラスの「継承」より「合成」がよい理由とは?ゲーム開発におけるコードのフレキシビリティと可読性の向上
関連するCode Smell