『ケント・ベックのSmalltalkベストプラクティス・パターン―シンプル・デザインへの宝石集』
https://images-na.ssl-images-amazon.com/images/I/5164YAE2H1L.jpg
また、デザイン(設計)についての本でもありません。デザインというものが、絞り込まれたオブジェクト間の関係を定義するプロセスであるなら、設計上の問題は、確かに実装時の問題としても出現するでしょう。デザイン・パターンはそういった共通性を捉えるのに非常に効果的です。しかし、それらはこの本の直接のトピックではありません。これはSmalltalkをうまく動かすための本です。オブジェクトをうまく相互作用させるのとはまったく異なったトピックなのです。
設計ーー本書で述べたトピックよりも少し上流(私の視点で)を扱ったテクニックはたくさんあります。オブジェクトを2つに分割することで再利用性を高めたり、メソッドやメソッドのセットをオブジェクト化することで柔軟性を得るパターンなどがあります。現時点でお勧めできる本としてGammaらの「デザインパターン」があります。
モデリングーー本書のパターンはSmalltalkが課す制限を解きます。モデリングに関しても、そこに課せられる多くの制限があり、それを解くべく重要な決断をしていかなければなりません。
(p.10)
プログラムを一つのことのみをするメソッドに分割しましょう。メソッド内部のメッセージは同じ抽象度のレベルになるようにします。こうするとプログラムは自然と数行のみの短いメソッドの集まりになっていきます。
(p.24)
目次
第1章 イントロダクション
1.1 コーディング
語りかけるプログラム
1.2 良いソフトウェア
1.3 スタイル
1.4 扱わない事項
1.5 本書の構成
1.6 適用
1.7 パターンの学び方
第2章 パターン
2.1 なぜパターンが有効なのか
2.2 パターンの役割
2.3 フォーマット
第3章 振る舞い
3.1 メソッド
3.2 メッセージ
第4章 状態
4.1 インスタンス変数
4.2 一時変数
第5章 コレクション
5.1 クラス
5.2 コレクションプロトコル
5.3 コレクションイディオム
第6章 クラス
第7章 フォーマット
第8章 開発例
8.1 問題
8.2 スタート
8.3 計算
8.4 統合
8.5 まとめ
付録A クイック・リファレンス
hr.icon
いい話koma.icon
プログラムは語りかけてくるということを知っていますか?「ジョルトコーラをもっと買おう。」といった類のメッセージではありませんよ。プログラムはもっと重要なこと、つまりシステムがどのように構成されるべきかということを教えてくれるのです。
たとえば、今まで快調にプログラミングできていたのに、プログラムが突然ぎくしゃくして動かなくなってきたとしましょう。とても困るでしょうが、これはプログラムが話しかけてきているのです。何か大事なことを見過ごしていますよ、と言うふうに。
プログラムが語りかけてきた時、パターンが何をするべきかを教えてくれます。新しいメソッドを作ったり、新しいオブジェクトを作ったり、新しい変数を作ったりする必要がでてくるでしょう。語りかけには応じなければなりませんが、行動する前に、耳をとぎすますべきです。 プログラマなら誰しも、人生を難しくするために設計されたのかと思うようなシステムにつき合わされた経験があることでしょう(たとえば、今使っているこのワープロもそうです)。その痛みや不満に慣れ、あたかも生活の一部のように扱ってしまうのは簡単です。しかし、プログラムはそんなふうになるべきではないのです。あなたは、そのプログラムをきれいで簡潔で、読みやすいものに変えることができるのです。
Rubyでの実装