「オブジェクト指向でなぜつくるのか」を読んだ

今まで Ruby, Java などオブジェクト指向言語に触れてきたけどオブジェクト指向っていうのが結局よくわかっていない。
クラスとかカプセル化とか継承とかの概念はわかるし使えもするけど、自分の知識は薄っぺらいというか真髄を理解していない気がしているので、オブジェクト指向を完全理解したいというモチベーションを持って読んだ。

しかし、この本ではオブジェクト指向は「クラスは処理を隠して、継承とポリモーフィズムは処理をまとめるだけだよ」みたいに書かれてて、それは本を読む前から理解してるし俺が知りたいのはそれじゃないんや〜って感じだった。
後半は要件定義とか関数型言語の話になって、何の本を読んでいるんだ?という気持ちになってしまった。

しかし、オブジェクト指向が生まれる前の話が書いてあって、昔は全てグローバル変数でサブルーチンがあるだけだったらしい。
なので、それと比較するとクラスで隠蔽できて、継承とかで処理を共通化できるのは素晴らしいことだったんだろうなと思う。
そこらへんの歴史的背景が知れたのはよかった。

自分が知りたいのは多分この本ではなくて、 オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES) の方なのかなと思った。

以下 wikihub 日報 のまとめ。


読み始めた。20% くらいまできた。
恥ずかしながらオブジェクト指向をちゃんと理解しておらず、概念はわかるがちゃんと使えていないという状態なのでためになりそう。

  • 「動物クラスから犬のサブクラス作って吠えるってメソッド実装する」って説明じゃ全くオブジェクト指向伝わらない
  • そんなわかりにくい例じゃなくてちゃんと説明するぜ
  • オブジェクト指向と現実世界は同じとか言われるけど全然違うから理解できなくて当然だぞ
  • オブジェクト指向は従来の開発を置き換える新しいものという説明があったりするが、それは間違い
  • オブジェクト指向は、それ以前のプログラミング技術を基礎としてその欠点を補うもの

オブジェクト指向をちゃんと理解できていないの、めっちゃコンプレックスなので完全理解したい…。


なんか読まないほうがいい気がしてきた


書評があまり良くないけど読み進めてる。45%くらいまできた。

  • クラスは関連性の強いサブルーチン(関数)とグローバル変数を1つにまとめて粒度の大きいソフトウェア部品を作る
    • 本当にその理解でいいのか…?
  • ポリモーフィズムと継承は、共通サブルーチンではうまく対処できない重複したコードを一本化する仕組み
    • 本当にその理解でいいのか…?

「書評が良くない」という情報を一度得てしまうと、内容に対し懐疑的になってしまうの良くない。
↑ の理解でいいならそもそもオブジェクト指向を理解していたということになるのだが、本質はそこじゃないと思うんだよなあ。
とりあえずもうちょい読み進めよう。


60% くらいまできた。
知ってる内容ばっかで、おれが知りたいのはそういう話じゃないんや〜ってなってる。


80% くらいまできた。
要件定義とかウオーターフォールとかアジャイルの話とかになってて、おれが求めてた書籍じゃなかった…。
とりあえずもうちょいなので読み切ろう。


なんか最後の方は関数型言語めっちゃいいぞ!って話になってハァ〜って感じだった。
オブジェクト指向の表面だけ舐める感じで微妙な本でした。