AmazonとACCUのレビューを読むと、John Lakos の著書『Large-Scale C++ Software Design』がモジュール化のロゼッタ ストーンである可能性が示唆されています。
同時に、この本は非常に珍しいようです。これを読んだことがある人はほとんどおらず、海賊版の電子コピーは出回っていません。
それで、あなたはどう思いますか?
私はそれを読み、大規模なC++プロジェクトのいくつかの実用的な問題に関する非常に有用な本だと考えています。すでにC++について多くのことを読んでいて、物理的な設計とその意味について少し知っている場合は、この本でひどく「新しい」ものをあまり見つけられないかもしれません。
一方、ビルドに4時間かかり、それを削る方法がわからない場合は、コピーを取得して読み取り、すべてを取り込みます。
物理的に優れたコードをすぐに書き始めることができます。
[編集]どこかで始めたいと思っていて、すぐに本を手に入れることができない場合は、大規模なC ++デザインを読んだ後でも、物理構造に関するGamesFromWithinシリーズが役立つことがわかりました。
興味深いことに、"More C++ Gems"には、Lakos の本の短縮版 (88(!) ページ) が含まれており、Google ブックスでオンラインで閲覧することもできます (本の前半に属しているため、完全に、と私は信じています)。.
それでは、興味のある方はお楽しみください:)
Lakosは、EDAソフトウェアを作成するMentorGraphicsで働いていました。彼はC++でEDAソフトウェアを構築することに携わっていました。そこでは、C ++を効率的に使用し(「Cコードよりも5%以下のオーバーヘッド」)、コンパイルに本当に長い時間がかかる初期のワークステーションでソフトウェアを構築する方法を整理したいと考えていました。大規模なC++アプリケーション。
この本は非常によく読まれています-それは多種多様なトピックについて論じています、そしてラコスは本当に彼のものを知っていました。彼は本当に、C ++コンパイラから効率的なコードを取得する必要があるというバックグラウンドと、C ++プログラムをセットアップして、保守が容易で、コンパイルとリンクを適度に高速化する方法から来ています。
Lakosには多くの洞察があると思いますので、ぜひお読みになることをお勧めします。ただし、テンプレートなどの機能が広く利用可能になる前の時代からの「伝統的な」C++です。私のコピーは販売されていません;^)
それは少し時代遅れです(実際、それが書かれたときは時代遅れでした)。私が正しく思い出せば、それの多くは、おそらくテンプレートで今やるであろう依存関係を減らすことに関するものでした。
これはおそらく大規模なプロジェクトで学ぶべき教訓の1つですが、通常は最先端の機能やツールを使用していません。
歴史的観点からも重要な本であり、優れた本です。
この本で説明されているプラクティスを実装するには、チーム内でかなりの規律と合意が必要であることに注意してください。以下にいくつかの注意事項を示します。
Lakos は、彼が「コンポーネント」と「パッケージ」と呼ぶものについて正確な定義を持っています。これらは大規模設計の鍵です。ただし、ソース ファイルとヘッダー ファイルの命名方法、およびそれらが含まれる順序については、規則に従う必要があります。残念なことに、ほとんどの人 (Lakos を引用している人を含む) は、これらの慣習にほとんど従いません。
この本はすべて C++ に関するものですが、概念はより広く適用できます。ただし、C++ は非常に複雑な言語であるため、本の大部分は C++ を効果的に使用する方法を教えています。それを乗り越えられれば、実際に他の言語を使っていても役に立つと思います。
「名前空間」の使用などの規定の一部は、現在物議をかもしていると考えられています。多くの人は、C++ では名前空間を限定的に使用する必要があると考えています。