C++再考[新装版]

レトロな表紙を見て「ま、読まなくてもいいだろ」と勝手に敬遠してましたが、これがとんだ大間違いでした。C++ で良いコードを書きたいと思っていて、まだ成長段階だと自覚している全ての人にお勧めです。

C++再考

C++再考

  • 作者: アンドリューコーニグ,バーバラ・E.ムー,Andrew Koenig,Barbara E. Moo,小林健一郎
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2002/11
  • メディア: 単行本
  • 購入: 2人 クリック: 23回
  • この商品を含むブログ (6件) を見る
扱っている内容を箇条書きすると以下のようになります。

  • C++ の存在意義、必要性、現実的な側面に関する考察
  • 継承とオブジェクト指向に関する考察
  • テンプレートと抽象化に関する考察
  • クラスライブラリと言語デザインに関する考察
  • プログラミング・テクニック
  • まとめと心構え

それから、この本を貫く大切なメッセージがあります。それは、

1. 問題を正しく理解せよ
2. 概念をクラスとして表現せよ
3. 複雑さを隠蔽する層を導入せよ

です。この 3 つを実践することで、概念と概念を混ぜ合わせ、安全で効率的で柔軟な新しい概念(すなわちクラス)を生み出すことができます。その手際は非常に鮮やかです。ハンドルクラスや、反復子、アプリケータ、マニピュレータのサンプルコードを通じて、優れたインタフェースとは何か、ということを学ぶことができます。


なによりもまず、Andrew Koenig の設計センスが素晴しい。「そうか、こうすれば良かったのか」とか「おおお、こんな協調動作が」といった驚きと発見が多々*1ありました。拡張性に乏しいコードから始めて、徐々に磨きをかけていく様子はワクワクしながら読めるし、ある種リファクタリングのお手本にもなっています。本当に、この本は読む価値があります。


汎用 ring buffer を紹介しようかと思ったのですが、この本を読んだ今となってはあまりにもお粗末だと思うので、引っ込めておきます。

*1:まあつまり、僕の C++ のレベルもその程度ということですね ;-)