Re: Large-Scale C++ Software Design
I've finally gotten around to reading the book "Large-Scale
C++ Software Design" by John Lakos. Has anyone documented
what parts of this book are now obsolete due to C++ language
changes such as namespaces?
Those recommendations were obsolete at the time the book was
Are you kidding? At the time I first saw the book, none of the
compilers I was using supported namespaces. Even today, I find
that namespaces introduce so much additional confusion in things
like function overloading (which isn't simple to begin with)
that I tend to avoid them, except maybe at the highest level.
(I'm glad that the standard library is in a namespace, for
or are now generally considered bad advice?
There's a good repository of bad advise here:
I gave it a quick glance, but there didn't really seem to be
much useful information there. (There were a lot of unjustified
opinions, but nothing concrete.)
To read LSCSD, imagine incorporating each guideline into your
own habits. Some, such as where to put #include lines, are
brilliant, crucial, and easy. Some, such as unit tests, are
mission critical but hard.
Some, such as Registered Package Prefixes, are still generally
valid but should not be slavishly applied. The book is still
completely relevant because Lakos doesn't just say "do this",
he explains his own research to arrive at each conclusion.
Draw your own results, and question _everything_ you read.
Even the stuff that keeps up with the Standard.
That sounds about like what I would say. All of the basic
principles still apply. How you actually apply them in any
given project will vary.
I also noticed that John Lakos has a book in preparation
called "Scalable C++: Component-Based Development" maybe
this is the much needed 2nd edition.
Maybe it will cover CORBA, which is an over-researched and
under-documented component system that appears to have much
I agree. Corba seems to be almost moribond, but for most of the
applications I see, it would be a far better solution than
things like XML, which are being used because they are "in".
James Kanze GABI Software
Conseils en informatique orient9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S9mard, 78210 St.-Cyr-l'cole, France, +33 (0)1 30 23 00 34
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]