オブジェクト指向プログラミングを学ぶのに適切な書籍と私がおすすめする読む順番

オブジェクト指向プログラミングを学ぶのに適切な書籍と私がおすすめする読む順番

何故かいたか

同僚Aが緑のデザパタ本読んでたり、同僚Bが他の人が読んでる本が気になるっていってたり、後輩Cが会うたびにおすすめの本を聞いてくるので、それらにちなんで、オブジェクト指向プログラミングを習得するためにこの順番でこの本を読むと良いのではないかということを伝えるために、私的な案を考えてみました。

短くまとめてはいますが真剣に考えています。

真剣に考えてみた結果、彼らに伝えて終わりにするのがもったいなくなってしまったのでブログに書いておくことにしました。

オブジェクト指向プログラミングが学べる書籍たち

私が読了済みの本の中から選んでいます。スムーズに理解が進むと思われる順番に並べています。

前提言語はJavaで言語構文にも十分詳しいことが大前提です。

  1. 現場で役立つシステム設計の原則
    • OOPらしさの雰囲気がわかります
    • 入り口に最適です。OOPがどう良くて嬉しいのか、平易でわかりやすく書かれています。
  2. テスト駆動開発
    • OOPらしいコードにたどり着く道筋がなんとなく見えます
    • そういう用途にも使えるというだけで、主題はテストコードです。
  3. リファクタリング
    • 手続き型からOOPらしいコードへ導く道筋のカタログです(リファクタリングが主題の本ですもんね)
    • リファレンスとして手元においておくとよいでしょう。
  4. パターン指向リファクタリング(絶版だが頑張ればまだ手に入る…)
    • さらにもう一歩踏み込んで、落とし所となるデザインパターンへ導く手法を主題にしています。
    • (3)と同じくカタログ化されています。リファレンスとして手元においておくとよいでしょう。
  5. Java言語で学ぶデザインパターン入門
    • (1)から(4)である程度OOPデザインパターンに対する理解が深まっているはずなので、このタイミングでやっとアカデミックにアプローチします。
    • 断片化しているデザインパターンの知識をここで体系的に纏めます。
  6. ドメイン駆動設計
    • ここからOOPを離れていきます
    • OOPをベースに、価値あるソフトウェアを戦術的に・戦略的に構築していく方法論が学べます。
    • いわゆる鈍器です。高いです。しかも抽象的で難解です。覚悟をもって読んで下さい。
  7. 実践ドメイン駆動設計
    • (6)の10年後に出た書籍です。DDDを具体的にコードに落とし込むとどうなるかにフォーカスしています。
    • 相変わらず、鈍器です。高いです。
    • CQRSやイベントソーシングなど技術的な観点が強めに入ってきます。
    • 実装例が出てきますが正解例ではないです。参考にするのはいいですが利用する場合は状況やプロジェクトの嗜好に合わせてアレンジしましょう。
    • これ読んだらもう一度#6読み直したほうが良いです。

その他のおすすめ(未読)

以下の書籍は私もまだ読んでいませんが、レビューなどを見る限りではなかなか良さそうです。これから読みます。

以上。