Book review: Large-Scale C++ Software Design

April 6th, 2009 by carlos

The book “large-scale C++ software design” presents a clear explanation of the concepts necessary to understand large-scale C++ systems. When a project has thousands of files, it is very difficult to manage the complexity of changing code. By its very nature, C++ puts a lot of stress on the building system, and a project can just become extremely hard to maintain if the proper code dependencies are not taken care of.

In large scale C++, John Lakos provides a very thorough discussion of techniques to avoid dependencie problems in large projects. The author skips simple concepts that are commonly treated in other books, such as naming variables and other style issues. Instead, he concentrates in problems that happen only on large-scale systems.

Large-scale C++ was the first book to bring into discussion the issue of header files as a major source of dependencies between C++ modules. Due to the compilation model used in C++, where each file can potentially include hundreds of header files, changing one of these headers can have a large impact on other parts of your program. In fact, in C++ is not uncommon that a single change in a header files requires the recompilation of thousands of files, or even the whole project.

The book also discusses how to create modules that have as few dependencies as possible. This practice increases reuse of the resulting software, since a programmer doesn’t need to include hundreds of header files just to have access to a single functionality.

Large-scale C++ has hundreds of examples, and every concept is accompanied by sample code illustrating the concept. It is a very thorough book, and even though it is long, every page has some interesting idea.

You can check other reviews and information about Large-scale C++ software design in its main web page.