0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

クラス設計 Interface Segregation(インターフェイス分離の原則) 〜トレードオフを考えよう〜

Last updated at Posted at 2023-05-02

今回は、リスコフの置換原則に続く、インターフェイス分離の原則についてです。

インターフェイス分離の原則

これは、「クライアントは自分が使わないメソッドへの依存を強制されてはいけない」ということです。

つまり、自分の必要な分だけ用意しましょうということです。
環境に配慮しましょうということです。←違う

例えば、ドラえもんのどこでもドアは扉を開くと好きなところに行けるというインターフェイス(メソッドやプロパティ)を持っています。

もし、ここにタケコプターのインターフェイスが混ざったら、どこでもドアがどこか遠くへ飛んでいってしまう訳です。それでは大迷惑です。

ですので、どこでもドアにタケコプターのインターフェイスは余計なので、分離しましょうということです。

しかし、rubyのメソッドは使うタイミングでしか呼び出されないので当てはまらないらしいです...

この原則をrubyに適用するならば、
「クラスをどれくらいの大きさにするべきか」という話になるとか。

まあクラスが大きい場合、モジュールに切り出すわけですが、どれをどれくらいに、どんな基準で切り出すかというまた別問題が出てきます。

また、切り出しすぎるとそれはそれでプログラマーの負荷が高まるということにもなります。

簡単にいうと以下のメリットがそれぞれあります。

クラス数を少なくする
=> コードが概念的にシンプルになる
クラス数を多くする
=> コードがモジュール化されるため部分修正が容易になる

この辺りのバランスが必要なわけですね。このインターフェースの分割については後日別記事にまとめたいと思います。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?