無差別に技術をついばむ鳥

情報処理技術全般を気まぐれにつつくゆるいブログです

書籍をつつく122−新装版 大規模C++ソフトウェアデザイン。実装デザインを知ろう♪

C++関連の書籍って名著が多いよね♪そんな名著の中から今日は
新装版 大規模C++ソフトウェアデザイン (ADDISON-WESLEY PROFESSIONAL COMPUTI) (ADDISON‐WESLEY PROFESSIONAL COMPUTING SERIES)
を紹介するピヨ♪みんな、実装デザインという言葉を知っているかな?
知らない人は必見ピヨピヨ♪目から鱗が出る事間違いなし♪


【目次】
 第0章 概説 
第1部 基本編 
 第1章 準備 
 第2章 基本原則 
第2部 実装デザインの概念 
 第3章 コンポーネント 
 第4章 実装階層 
 第5章 レベル化 
 第6章 絶縁 
 第7章 パッケージ 
第3部 論理デザインの問題 
 第8章 コンポーネントの構築 
 第9章 関数のデザイン 
 第10章 オブジェクトのインプリメント 
 付録A Protocol Hierarchyデザインパターン
 付録B ANSI C互換C++インターフェースのインプリメント
 付録C 依存性抽出/分析ツールパッケージ
 付録D 便覧 
 参考文献
 索引


C++で数十万行以上のプロジェクトに関わった事がある人はコンパイルが異常に遅いという経験をした事があると思う。ボクも、研究や仕事でそういう体験をした事があるピヨ。そんな時発見して買ったのがこの書籍ピヨ♪
この本は、コンパイルの効率化やテストの容易性などを実現する実装デザインについて書かれた本ピヨッウ♪みんなデザインパターンは知っているよね?それとか、オブジェクト指向の本とかも読んだ事あるよね?それらは、論理デザインに分類される事を書いた本なんだ。でもこの本はそれとは対照的に実装デザインを書いた数少ない本なんだ。
実装デザインを聞いた事がない人が多いと思うからそれを説明するピヨ。実装デザインは説明し辛いんだけど、簡単に言うとコンパイルなどの物理面の設計ピヨ。例えば、コンパイルするには多数のヘッダファイルとソースファイルが要るよね。みんなが知っている論理デザインでは、このファイルに何のコードを記述するとか、そういった物理面は考えないよね。だけど、実装デザインではこれを深く考えるピヨ。言葉だけでは分かり難いから実例も書くピヨ。

//Foo.hファイルの例 #ifndef INCLUDE_FOO #define INCLUDE_FOO #ifndef INCLUDE_MATCH #include <match.h> #define INCLUDE_MATCH #endif class Foo2; //fooのインタフェースを定義(内容はテキトー) public class Foo { Foo2* fooObj; public: //........省略 }; #endif

何故こんな風に書くのか分かるかな?それはコンパイルの効率を向上するためピヨ。ちょっと大きなプロジェクトを経験した事が無い人はピンと来ないと思うけど、コンパイルは結構時間がかかるんだ。もし、ちょっと変更しただけで1時間ほど待たされたら開発効率が悪いと思うよね。冗談のようだけどこれはありえる話で、この本の著者によるとコンパイルに1日かかったケースがあるそうだ。この状態では、まともに開発作業が出来ないピヨォ。
この本のページ数を見たら察しがつくと思うけど、実装デザインの内容はコンパイル時間だけではないピヨ。テストを容易にするインタフェースの宣言法も実装デザインの範疇ピヨ。インタフェースが複雑に絡まったクラスは非常にテストがし辛いピヨ。というのも、テストコードを書くだけで、色々なオブジェクトの設定をしなきゃならないからね。その状態でバグがないソフトウェアが開発できるとは思わないよね。テストファーストが当たり前の時代だからテストのやりやすさは重要事項ピヨ。

ボクはこの本をC++を使うプロジェクトに従事する全ての人にお勧めするピヨ♪大規模プロジェクトでなくても通用する実務に必要な技法が詰まっているからね♪内容は難しいけど、効率の良い仕事をするために必要な知識だから絶対に読んで損はしないピヨッ♪
別窓 | 書籍レビュー | コメント:0 | トラックバック:0 | ∧top | under∨
| 無差別に技術をついばむ鳥 | 中の人の徒然草266>>

この記事のコメント

∧top | under∨

コメントの投稿

 

管理者だけに閲覧
 

この記事のトラックバック

∧top | under∨
| 無差別に技術をついばむ鳥 |