Monday, July 21, 2003


There are a large number of books on "tactical" OO - almost implementation-detail level. In the C++ world one thinks of Meyers' Effective C++, or Sutter's Exceptional C++ and all their respective sequels - but big picture books are comparatively rare.

One such that is worth at least looking through is Lakos' Large Scale C++ Software Design.

Although it is aimed at a specific language, it shows some fairly key points, concentrating on the desirability of making designs that are internally modular on levels above that of the individual objects.

The way C++ is implemented via its use of header files actually makes it immediately obvious in terms of the of time taken to do an incremental build whether a design is overly-strongly coupled or not. If making a change to the internal details of one class causes most of the rest of the system to be rebuilt, it will show in a way that Java or C# style dynamic linkage does not. What is less obvious at this point, but which will reap benefits in the future, in terms of maintenance load, is that if distinct sections of the code only expose narrow and well documented interfaces to their customers, while sharing wider ones, then the maintainer is able to look at the implementing code one such chunk at a time. That helps keep the 5 plus/minus 2 item wetware stack from popping.

No comments :