それはみんなの心の中にあるよ
目指すはSimplify。
データは無機質な構造を表す。(Cのstructureのイメージ)
そこに対して、
オブジェクト指向はデータ自身とデータであることを隠蔽する。
操作(振る舞い、更新、削除、追加etc..)などといった人がアクセスを必要とするものを常に簡素化し、必要なものだけを見、必要なものだけを触れるべくしてある。
すると変化に強くなり、インターフェイスを見たときに簡素化されているので、扱いが楽になる。
よって、適切なインターフェース分離をしなければならないと考えられる。
が、そこは経験に左右されるので、デザインパターンがあったり、
- 単一責任の原則
- オープン・クローズドの原則
- リスコフの置換原則
- 依存関係逆転の原則
- インターフェイス分離の原則
のような便利な原則がある。
オブジェクト指向は人が理解をしやすくするためのもの、という考えもあるが、
実際どうやったら万人に理解がしやすいものができるだろうか?
本当にそのネーミングやインターフェースは万人が理解しやすいものなのだろうか?
それって、オレオレネーミング(命名)だったり、オレオレインターフェース(関係性)だったりしない?
オブジェクト指向は個の性質の差異までは保証しない。
はたして俺に理解しやすいものが、万人(のプログラマ)にとって理解しやすいのか?
と疑念に思ったとき、様々な道しるべが示されているので、
それに沿えば良いということになる。
(とか勝手に思ってます)