それはみんなの心の中にあるよ

目指すはSimplify。
データは無機質な構造を表す。(Cのstructureのイメージ)
そこに対して、
オブジェクト指向はデータ自身とデータであることを隠蔽する。


操作(振る舞い、更新、削除、追加etc..)などといった人がアクセスを必要とするものを常に簡素化し、必要なものだけを見、必要なものだけを触れるべくしてある。
すると変化に強くなり、インターフェイスを見たときに簡素化されているので、扱いが楽になる。


よって、適切なインターフェース分離をしなければならないと考えられる。
が、そこは経験に左右されるので、デザインパターンがあったり、

  • 単一責任の原則
  • オープン・クローズドの原則
  • リスコフの置換原則
  • 依存関係逆転の原則
  • インターフェイス分離の原則

のような便利な原則がある。
オブジェクト指向は人が理解をしやすくするためのもの、という考えもあるが、
実際どうやったら万人に理解がしやすいものができるだろうか?
本当にそのネーミングやインターフェースは万人が理解しやすいものなのだろうか?
それって、オレオレネーミング(命名)だったり、オレオレインターフェース(関係性)だったりしない?


オブジェクト指向は個の性質の差異までは保証しない。


はたして俺に理解しやすいものが、万人(のプログラマ)にとって理解しやすいのか?


と疑念に思ったとき、様々な道しるべが示されているので、
それに沿えば良いということになる。
(とか勝手に思ってます)