少し頭休め。になるかなあ。 2月あたりから、本職MOSの本、Lie群、Lie環、可積分系、と重い本が続いた。 まあ、可積分系はあまり重くないと言ってもいいけど。 ここらで、方向をちょっと変えて気分を変えたい。 ケントベックの、あの読み難さが爆発したら、やめるかも知れない。 せっかくだから、squeakもまた入れるかなあ。 うーん。これは良い本だ。ケントベックの過去読んだ本のなかで最高評価であ る。カタログ的な本なので、あまりベック的飛躍がない、という可能性もある が、非常に実用的で良い。 惜しむらくは、これが結局smalltalkという言語に特化してしまっていること で、しかもsmalltalkはあまり勘で読めないんだよ。 しかも、smalltalk用語というのがかなりある。 セレクタ と言われて、メソッドの名前のことだと思う人はあまりいない。 どうしても私は、rubyに翻訳しながら読んでしまうのだけど、あらためて、 rubyはいいせんいってるなあと思う。 「Explicit Initialization」 initializeを実装し、newをオーバーライドして、initializeを呼びましょう なんて、Rubyの実装そのまま。 「Super」 で、著者が経験した追跡がもっとも困難だったバグの一つとして現在のメソッ ドと関係ないSuperの適用、があげられてるが、Rubyでは、superは実行中のメ ソッドのsuperクラスでの実装を呼びだすメソッドであり、この問題が起らな い。 ところで、この本が読みにくいとしたら、例題がsmalltalkですぐに読めない というのともう一つ、 各プラクティスタイトルが数単語のフレーズで、それが原書のままなんだろう けど、そのフレーズに対する説明が全然ないこと、だろう。 「Composed Method」 について、そのまま読めば、「組み立てられたメソッド」なんだろうけど、 問題文は、「プログラムをメソッドに分割するにはどうしますか」 で、分割することが主題である。らしい。 解決法は、「プログラムを一つのことのみをするメソッドに分割しましょ う。」で、やっぱり分割することが主題らしい。 ずーっと分割について説明していく。 で、なんで Composed なの?という質問には最後まで答えてくれない。 例を読んで想像するに、メソッドを分割した結果、メソッドが、いくつかのメ ソッド呼びだしを組み合わせることで書けるような時、そういう結果の状態の ことを、「組み立てメソッド」と呼んでいるような気がする。 キャッチフレーズと、その意味の関係を陽に説明して欲しい。 プログラマー同士の会話で、 「おっと、そのメソッドはもっと分割してComposed Method化すべきだよ」な んて言うのかなあ。 「Lazy initialization」「Pluggable Behaviour」 なんてのも、やっぱりあまりなじみのない単語だし(私には)、説明があった方 がいいと思う。LazyにしてもPluggableにしても単語の日本語訳も、その単語 をこの用途に使う意図も説明がない。 せめて日本語版なんだから、「組み立てメソッド」「必要に応じた(?)初期化」 「プラグイン可能なセレクタ(メソッド)」なんて日本語化したり、英語と併記 したりしてもいいような気がする。 フォーマットに関する章は、さすがに異論がいっぱいあるなあ。 もちろんsmalltalkでコーディングなんかしたことないから、いいかげんな意 見なんだけど。 とりあえず、私には、そもそもsmalltalkの文法は読み難い。どこまでがどの インスタンスに送られてるのかわかりにくい。著者は、括弧を使うことを嫌う んだけど、括弧を使って読み易さを向上する、というのが他の言語のやりくち なんだけどね。 Rubyは、なんとなく縦長になる傾向があると思うんだよね。インデントをスペー ス3つとする流儀だと、特に、エディタの左半分で縦長になる。インデントの 話だから、べつに行数が多くなるわけじゃないんだけど。 開発例の章はいいかげんに流して終了。 2004/06/22