今回は、リスコフの置換原則に続く、インターフェイス分離の原則についてです。
インターフェイス分離の原則
これは、「クライアントは自分が使わないメソッドへの依存を強制されてはいけない」ということです。
つまり、自分の必要な分だけ用意しましょうということです。
環境に配慮しましょうということです。←違う
例えば、ドラえもんのどこでもドアは扉を開くと好きなところに行けるというインターフェイス(メソッドやプロパティ)を持っています。
もし、ここにタケコプターのインターフェイスが混ざったら、どこでもドアがどこか遠くへ飛んでいってしまう訳です。それでは大迷惑です。
ですので、どこでもドアにタケコプターのインターフェイスは余計なので、分離しましょうということです。
しかし、rubyのメソッドは使うタイミングでしか呼び出されないので当てはまらないらしいです...
この原則をrubyに適用するならば、
「クラスをどれくらいの大きさにするべきか」という話になるとか。
まあクラスが大きい場合、モジュールに切り出すわけですが、どれをどれくらいに、どんな基準で切り出すかというまた別問題が出てきます。
また、切り出しすぎるとそれはそれでプログラマーの負荷が高まるということにもなります。
簡単にいうと以下のメリットがそれぞれあります。
クラス数を少なくする
=> コードが概念的にシンプルになる
クラス数を多くする
=> コードがモジュール化されるため部分修正が容易になる
この辺りのバランスが必要なわけですね。このインターフェースの分割については後日別記事にまとめたいと思います。