大規模C++ソフトウェアデザイン 新装版 の商品レビュー
大規模なC++のソフトウェアを作る場合には、数多くのプログラマが参加し、何百万行というコード、何千というクラスを書いてゆくことになる。サブシステム同士ができるだけ干渉しないようにし、コンパイル時間を短縮し、テストを効率的に行うにはどのようにデザインすればよいのか。単なるノウハウに...
大規模なC++のソフトウェアを作る場合には、数多くのプログラマが参加し、何百万行というコード、何千というクラスを書いてゆくことになる。サブシステム同士ができるだけ干渉しないようにし、コンパイル時間を短縮し、テストを効率的に行うにはどのようにデザインすればよいのか。単なるノウハウにとどまらず、巡回依存性などの概念とそれに対する定量的な指標を導入しながら解説する。 通常のテキストで解説される「論理デザイン」を補完する、「実装デザイン」を検討する。コンポーネント、パッケージといった実装上の単位を導入。レベル化、絶縁、パッケージという手法によって効率的な開発が可能になる。論理デザインについても、実装デザインの後で解説しているが、この本のエッセンスは実装デザインを徹底的に議論しているところだろう。類書が見当たらないので、貴重な示唆を得られた。
Posted by
あまり考えずにC++でコードを書くと、ヘッダファイル同士のincludeによるコンパイル時の結合が発生し、少しのコード変更がほぼ全てのコードのコンパイルし直しを引き起こしたりする。この本はC++で大規模なソフトウェアを開発する際に気をつけるべきコンパイル/リンク時間の削減方法や...
あまり考えずにC++でコードを書くと、ヘッダファイル同士のincludeによるコンパイル時の結合が発生し、少しのコード変更がほぼ全てのコードのコンパイルし直しを引き起こしたりする。この本はC++で大規模なソフトウェアを開発する際に気をつけるべきコンパイル/リンク時間の削減方法や、コンポーネントの設計方法をサンプルコードを多数交えながら解説してくれている。 ・コンパイル時依存性/リンク時依存性 ・コンポーネント設計におけるレベル化 ・絶縁 については知っておくべきだと思う。 一つ気をつけなければいけないのは、この本の原典が出版されたのがかなり前であるため、名前空間をまだ実験段階のものとして扱っていること。今のコンパイラならば名前空間はちゃんと使えると考えて良いだろうから、ファイルスコープの関数などはstaticではなく無名名前空間を使うべきだろう。
Posted by
- 1