|Glenford J. Myers: Composite Structured Design, 1978, Van Nostrand Reinhold, ISBN 0-442-80584-5, 175 pages||Steve McConnell: Code Complete, (second edition) 2004, Microsoft Press, ISBN 0-7356-1967-0, 900 pages|
Surprisingly little has changed in principles of program design since Glen Myers wrote his aclaimed book during the height of the "structured revolution". Steve McConnell echoes most of Myers's advice on component coupling and module cohesion ("strength") as well as the stepwise refinement process. Despite the age of Composite Structured Design there's virtually nothing in it that doesn't apply to today's software development milieu, and every programmer or software engineer should master it.
Of course, Myers didn't know about classes and objects, which are the focus of McConnell's volume. McConnell assumes that the reader understands and intends to practice object-oriented design. His examples are in C++, Java, and occasionally Microsoft's proprietary Visual Basic.
The popular complaint against the Myers book was that it introduced too much new terminology, some of which wasn't really needed, for example seven named varieties of component coupling. Now that we've become accustomed to those terms, they no longer seem difficult or unnecessary.
The main complaint against McConnell's book will probably be about its length. It takes a long time to read through it sequentially, and it doesn't lend itself, on first reading, to selective browsing. The style is friendly and readable, however, so reading the whole book is a pleasant chore. I managed to digest it over several days on the Chicago subway.
I mildly regret that examples in some parts of the book don't always practice what McConnell preaches in other parts (a common flaw in programming texts). In particular, the author doesn't always exploit object-orientation when it's called for, a shortcoming I noted in a recent article on string handling by Koenig and Moo. If you're an experienced senior programmer, you'll probably disagree with some of his advice, but you'll surely find the great bulk of it reinforcing your views, and you'll want to recommend it to your less experienced colleagues.
Some major pluses
I was especially pleased by Steve McConnell's resistance to the more extreme forms of today's fad methodologies and insider snobbery. For example:
Mr. McConnell's emphasis is on good practice and quality throughout, as it should be.
and a few minor minuses
Since I was extremely critical of another book for similar flaws, fairness requires that I point out two minor gaffes in Chapter 17's discussion of recursion:
Both highly recommended
Return to book reviews.
Return to table of contents.