kanizaのブログ

コンピュータ、ソフトウェア、映画、音楽関連や家族のことなど、思いついたことを書きます。

オブジェクト指向のこころ

デザインパターンとともに学ぶオブジェクト指向のこころ (Software patterns series)

デザインパターンとともに学ぶオブジェクト指向のこころ (Software patterns series)

だいぶ前からちょこちょこ読み進めていて、ようやく終わった。村上雅章さんの翻訳ということで購入したのだった。原題の「Design Patterns Explained」を「オブジェクト指向のこころ」と訳すあたりは「The Pragmatic Programmer」を「達人プログラマー」と訳した村上さんならではというところか。

この本は、GoFの「デザインパターン」にあるインタフェースやコンポジションを重視した設計思想を、かつての「クラス継承」に代表されるようなオブジェクト指向との違いを踏まえつつかなり入念に説明している。デザインパターンを題材に、その背後にあるオブジェクト指向の原則を伝えようとしてるんだよね。現実的な問題について、どのような思考過程を経て、デザインパターンを活用した解に至るのか。まさに「こころ」。そのへんをここまで解説した本は他にあるかなぁ?

終盤ではファクトリの役割についてもけっこう詳しく書いてある。そこでは一般的規則として「オブジェクトは、他のオブジェクトを生成および/あるいは管理するか、他のオブジェクトを使用するかのどちらかのみを行ない、双方を行ってはいけない」とある。僕がファクトリの重要さを認識したのはけっこう最近だ。オブジェクトを生成して、利用できる状態にするというのは実はけっこうな大仕事で、甘く見るとコードに余計な複雑さを持ち込む大きな原因になる。だから、生成を専門に扱うクラスを分離する価値は十分にあるんだよね。そこを意識してないと、あるオブジェクトが、自分が「使用」するオブジェクトを「生成」するため「だけ」にたくさんのオブジェクトを保持してしまったりする。そういうオブジェクトはファクトリが保持していればよくて、使用と生成を役割分担するだけでずっとキレイになるクラスはたくさんあるはず。

そんなこんなで、僕自身が数年間の経験で得たあれこれが、うまく、そして熱意を込めて説明されているという印象を持った。もちろん新たな知識も得られたしね。

オブジェクト指向を勉強してみたけど、何がうれしいのかよくわからんという人には、わりと気軽に読める良書としておすすめしておく。