クリプキクローネ日記帳

ある種の音楽と数学とランニングはミニマルなところが似ていると思う。

-デザインパターンとともに学ぶ-オブジェクト指向のこころ[Alan Shalloway, James R. Trott(著), 村上雅章(訳)] (丸善出版)

原題は " DESIGN PATTERNS EXPLAINED SECOND EDITION" です。

原題がこのようにシンプルですっきりしたタイトルなのに
日本語版でいきなり「こころ」みたいなぼんやりとした単語が出てくるのはどうなのかなと思ってましたが、
実際読んでみると予想以上に「オブジェクト指向のこころ」の本でした。
日本語版タイトルが正しいです。

オブジェクト指向のこころの話は退屈なところもあれば納得するところもあり、でした。
「継承より集約」は実感としてあるし、今まで多くの残念な継承を作ってきました。
「直感を信じろ、胸騒ぎを感じたらやめろ」もまさにそうだなと思います。
オブジェクト指向の非論理性について開き直ってそう書いてあるのは好感がもてます。
OAOO(Once And Only One)は当たり前じゃんとなりがちですが、
どうしても厳しいときもあるので原理主義者にならないようにしないといけないです。

そしてメインとなるデザインパターンの説明もわかりやすくてよかったです。


そもそもGoFのデザインパターンの本を読んでないのがダメなんですが、
今までネットや本でかじった内容より丁寧に説明されていていろいろ考えることが出来ました。
GoFのパターンの一部しか載っていませんが、無理に全部網羅するよりいいと思います。

そんな大層な名前つけなくても自然と似たようなことやってるよ、
というのは誰が読んでもいくつかありますが、
きっとそういうことにちゃんとした名前をつけるのが大事で、
それによってこうやっていろいろ議論できるのということなんだと思います。

Facadeパターンみたいに状況をシンプルにしてくれる人は大事ですね。

Adapterパターンみたいにインターフェースのことを気にして層を増やしておくと、
やっぱりなんだかんだ便利なんですよね。

Strategyパターンはいわゆるモノ以外のオブジェクトで、
こういう無形オブジェクトは思いつくとキレイになるんですよね。思いつかないけど。
あと、やり過ぎると追いかけづらくなると思います。

Factory系のパターンが何個か。
継承ツリーが複雑になってくると、場合分けで生成するクラス変えられるのは便利そうですね。

Decoratorパターンの再帰のにおいが好きです。
うまくリストらしく動いたとき絶対楽しいはず。
そこまでしなくていいケースも多そうですが。

Observerパターンはイベント登録の手段が他にあれば出番は減りそうですが、
うまく使えばどちらも重くならないまま監視役を分離できそうです。
インクルード関係が循環参照っぽくなるのでちょっと気になってしまいます。

Singletonパターンは便利でついつい使っちゃうんですが、
それはただのグローバル変数だ、という指摘も多くて、見方によって評価もまちまちですね。
マルチスレッドのDouble-Checked LockingパターンはJavaでは最適化のせいでうまく動かなくて、
かわりにネストクラスで実現するそうです。
というか、最初からインスタンス起こしておけばいいじゃないかと思ってしまいますが、
あくまで呼ばれたときに起こしたい場合もあるんですね。

デザインパターンはテクニカルなものも多くて、言語の基礎が終わってからやるものだと思ってましたが、
オブジェクト指向のキモだから言語仕様と一緒に学ぶべき、という考え方もあるんだというのがおもしろかったです。
それは大変そうだ。
  1. 2016/10/22(土) 03:25:46|
  2. | トラックバック:0
  3. | コメント:2
<<人月の神話 新装版[Frederick P. Brooks Jr(著), 滝沢徹, 牧野祐子, 富澤昇(訳)] (ピアソンエデュケーション) | ホーム | オブジェクト指向は芸術か>>

コメント

そんでもって

先生とKは最後どうなったの?
  1. 2016/10/27(木) 22:32:07 |
  2. URL |
  3. yu-hr #-
  4. [ 編集]

そんでもって

先生とKはこないだ誰かの結婚式で会ったって言ってたよね。
  1. 2016/11/01(火) 23:54:49 |
  2. URL |
  3. わ #cZ.aCtDc
  4. [ 編集]

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://myumbrella.blog42.fc2.com/tb.php/336-0b5f9f83
この記事にトラックバックする(FC2ブログユーザー)