C++再考[新装版]
レトロな表紙を見て「ま、読まなくてもいいだろ」と勝手に敬遠してましたが、これがとんだ大間違いでした。C++ で良いコードを書きたいと思っていて、まだ成長段階だと自覚している全ての人にお勧めです。
- 作者: アンドリューコーニグ,バーバラ・E.ムー,Andrew Koenig,Barbara E. Moo,小林健一郎
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2002/11
- メディア: 単行本
- 購入: 2人 クリック: 23回
- この商品を含むブログ (6件) を見る
- C++ の存在意義、必要性、現実的な側面に関する考察
- 継承とオブジェクト指向に関する考察
- テンプレートと抽象化に関する考察
- クラスライブラリと言語デザインに関する考察
- プログラミング・テクニック
- まとめと心構え
それから、この本を貫く大切なメッセージがあります。それは、
1. 問題を正しく理解せよ
2. 概念をクラスとして表現せよ
3. 複雑さを隠蔽する層を導入せよ
です。この 3 つを実践することで、概念と概念を混ぜ合わせ、安全で効率的で柔軟な新しい概念(すなわちクラス)を生み出すことができます。その手際は非常に鮮やかです。ハンドルクラスや、反復子、アプリケータ、マニピュレータのサンプルコードを通じて、優れたインタフェースとは何か、ということを学ぶことができます。
なによりもまず、Andrew Koenig の設計センスが素晴しい。「そうか、こうすれば良かったのか」とか「おおお、こんな協調動作が」といった驚きと発見が多々*1ありました。拡張性に乏しいコードから始めて、徐々に磨きをかけていく様子はワクワクしながら読めるし、ある種リファクタリングのお手本にもなっています。本当に、この本は読む価値があります。
汎用 ring buffer を紹介しようかと思ったのですが、この本を読んだ今となってはあまりにもお粗末だと思うので、引っ込めておきます。