良いインタフェース

good-interface.png

完全で最小限のインタフェースが良いインタフェース

完全なインタフェースとは

クライアントが普通やりたいと思うようなことは、何でもできるようなインタフェースである。[Bibliography item scot not found.]

最小限のインタフェースとは

  • 関数の数が可能な限り切り詰められている
  • 関数同士で機能がオーバーラップしていない

いっぱい関数があればあるほど便利(なんでもできそう)なのになぜ最小限なのか?

  1. 関数の数が多いほどクライアントにとって理解しがたいものになる
  2. 理解しがたくなると→クライアントは学習したくなくなる

100個の関数があってなんでもできるインタフェースより、10個の関数でなんでもできるインタフェースの方がいいってこと。
つまり、、一つの関数になるべく汎用性を持たせるのがいいってこと?

  • 同じ機能がある、名前だけ違うような関数は作るな
クライアント側は、名前が違うんだから、何か機能が違うのかも、と考えて混乱してしまうから。
少なくする 多くてもいい
関数の数 引数の数

多いのがだめな理由その2

保守が難しくなる。

関数を追加するときに気をつけること(トレードオフ)

その関数を加えることによって得られる利便
その関数を加えることによって損なわれる理解の容易さ,保守性,コンパイル速度

関数を加えるべき時

  • 一般的に行われるような仕事を、ずっと効率よく実装してくれるメンバ関数になる
  • メンバ関数の追加によってクラスが使いやすくなる
  • そのメンバ関数の追加によってクライアントのエラーを阻止できる
  • 戻り値constのやつとそうじゃないやつはそれぞれ用意してもいい

疑問

純粋仮想関数もあるけど
データメンバやただのメンバ関数もあるようなクラスってなんという?->javaでいうとabstractクラスにあたると思う。
作りたいインタフェースを思いついた。
ファイル形式が.rawでも何でもload()するだけでボリュームデータを呼んでくれるクラス!!
実装に対してではなく、インターフェースに対してプログラミングせよ[Bibliography item headfirst not found.]

インタフェースにしたいけど、引数があったりなかったりしたらどうすればいいんだ???->使わない引数があってもいい

困ってること

一度インタフェースの仕様を決めるが、あとで引数を変えたくなる。
すると、いっぱい変更点が生じて大変になる。
引数がどんどん増えて困っている。

Bibliography

good

サポートサイト Wikidot.com good