5 of 5 people found the following review helpful
4.0 out of 5 stars A Must-Read, but Dated and Wordy
This book is a must-read for any serious C++ programmer. Why? Because it is the only decent treatment of physical C++ design available.
Physical design issues, if not addressed, will inexorably cripple any sufficiently complex, performance-sensitive C++ project. Moreover, there is never any time to worry about physical design quality in the heat of battle, so you really...
Published on July 23 2002 by Anders Johnson
3.0 out of 5 stars Helpful, to a point
The book offers a lot of tips early on explaining ways to avoid keeping everything in the headers to permit changes to occur without forcing a load of code to recompile.
My problem was that to avoid this recompilation the code has to get very confusing in hiding methods and variables.
I'm halfway through the book and a reread will definitely be required, but I...
Published on Feb. 17 1999
Most Helpful First | Newest First
5 of 5 people found the following review helpful
4.0 out of 5 stars A Must-Read, but Dated and Wordy,
This review is from: Large-Scale C++ Software Design (Paperback)This book is a must-read for any serious C++ programmer. Why? Because it is the only decent treatment of physical C++ design available.
Physical design issues, if not addressed, will inexorably cripple any sufficiently complex, performance-sensitive C++ project. Moreover, there is never any time to worry about physical design quality in the heat of battle, so you really need to deal with it up front.
Having said that, the book is not without its flaws.
First, the age of the text is evident. It doesn't address the interchangeability of typedefs and classes for certain purposes, it doesn't fully appreciate the power of namespaces, and it is rife with "the World didn't go that way" conventions. Fortunately, this doesn't prevent the book from getting its point across, but you do need to take some of its "rules" with a grain of salt.
Second, it's longer than it needs to be. This isn't so much of a liability, because it reads faster as a result. Still, its redundancy and long-windedness is sometimes tedious.
But all in all, if you've bothered to read this review, then you probably ought to own a copy of this book.
2.0 out of 5 stars Dated book, not that great,
This review is from: Large-Scale C++ Software Design (Paperback)This is a well written book, but not a well written book on C++. It is also not very good at being efficient with the amount of things you learn in the number of pages you read. A lot of subjects are repeated over and over again it seems just to make this book appear longer than it really is to match its title of "Large Scale C++ Software Design". Many of the examples and methods proposed in this book do not lead to efficient coding methods but more or less a way decrease the time required to compile programs which is a topic that does not deserve an entire book devoted to. In this whole book I learned maybe one technique that I would probably not use anyway. The code in this book isn't indicative of its title and if you thumb through the book quickly when you pick it up you might come under the impression that it is a book with a lot of code examples, but it doesn't have much at all. The code is all very similiar and there isn't much variety at all. If you learn well from reading text alone then I suppose you could benefit from some of the examples in this book, however I believe you can find other books on C++ that will lead you in the right direction when it comes to C++ software design.
5.0 out of 5 stars Solid. Rare.,
This review is from: Large-Scale C++ Software Design (Paperback)I suppose this is the only book of its kind --- the physical C++ design kind, as oppose to conceptual C++ design. The author and gang have been writing large-scale C++ software with millions of lines of code, I imagine. Along the way, they were bound to swallow lessons that we haven't, couldn't be bothered, or perhaps never will get to learn. Imagine what it takes to build a 2000-story skyscraper. To begin with, that building probably needs one heaven of a solid foundation. And this book is heavy on fundamentals all right. Honestly, it must have had one heaven load of principles and design rules.
This book teaches clean C++. Very clean. Well applied, pointers from this book make people who maintain your code smile. And we all know that could very well be yourself.
Most of those goodies apply to small projects as well, I (ahem!) agree with the author. After all, heck, if I can't write a 500-line program well, I wouldn't hire myself to write a 20,000-line program.
5.0 out of 5 stars issues that most books fail to see,
This review is from: Large-Scale C++ Software Design (Paperback)This books is truly amazing, I have read a lot of books about C++ (probably too much), but I definitely can say that this books hold a different perspective about most issues and I learned a lot of PRACTICAL issues.
5.0 out of 5 stars Highly insightful,
This review is from: Large-Scale C++ Software Design (Paperback)This book provides great insight on a number of issues on OO physical design. Its information on refactoring pre-dated several of the more contemporary books. Its introduction of heuristics and metrics for the evaluation of physical design has helped me on several occasions. It can be a little lengthy and dry at times, but that is excused by the quality of the information.
5.0 out of 5 stars An excellent analysis of physical design.,
This review is from: Large-Scale C++ Software Design (Paperback)This comprehensive reference covers all aspects of physical design in C++. The material is relevant to all C++ projects however the effects of poor physical design are amplified in large-scale projects. John Lakos illustrates how to eliminate cyclical dependencies, excessive link-time dependencies, and excessive compile-tine dependencies. Provides guidance for organizing the content of header files. Covers components, physical hierarchy, levelization, encapsulation, insulation, and packages. As a bonus the author includes an excellent essay on designing a function interface specification including the following tradeoffs: operator or non-operator function, free or member operator, virtual or non-virtual function, pure or non-pure virtual member function, static or non-static member function, const or non-const member function, public, protected, or private member function, return by value, reference, or pointer, return const or non-const, friend or non-friend function, and inline or non-inline function. Includes a dependency extractor/analyzer package in appendix C.
4.0 out of 5 stars Industrial sized software,
This review is from: Large-Scale C++ Software Design (Paperback)The complexity of developing large scale programming projects is rarely addressed in computer science texts. I find most books are written from an academic perspective that rarely addresses what "should be done" rather than what "could be done". As a systems integration professional, I found this book to be one of the few useful books that address the difference between a single person coding effort and a large scale development project.
The book is organized in three major parts. "Part I - The Basics" covers language details, common design patterns, style conventions used in the book and the fundamental design practices to be used in every C++ project. The next two sections cover the real "meat" of the information. "Part II - Physical Design Concepts" covers components, physical heirarchy, levelization, insulation and packages. The techniques in this section are designed to improved testability, reduce compile time and improve version control/configuration management. "Part III - Logical Design Issues" addresses the marriage of solid physical design with key design/architectural issues.
The book is well written and easy to follow. Logical concepts are introduced with relevant diagrams and then made tangible with actual code. I have used this book on three projects and it has helped my technical leads in every case.
4.0 out of 5 stars Complements Scott Meyers' two Addison-Wesley volumes,
This review is from: Large-Scale C++ Software Design (Paperback)Lakos's 1995 book needs updating to recognize recent additions to C++, e.g. bool, namespace. However, the perceptive reader will have no trouble extending the principles to the newer features.
If there's a drawback it's that Lakos focuses on how to cope with mammoth programs more than on how to keep programs from becoming mammoth in the first place.
4.0 out of 5 stars Good book on Physical design of OOP,
By A Customer
This review is from: Large-Scale C++ Software Design (Paperback)Though over 800 pages, it is very easy to read book. I think the presentation is well organized. All the major points are outlined clearly. following the charts, tables,graphes and sources, one can get essence of phyicial design immediately. (sometime I feel funny about all the definitions given by Mr.Lakos, they're too trivial to occupy some space as principals.) PartII on physical design concept is very useful for guys that already read effective c++, design patterns etc, which mostly dwell on logicial design issues. It's a thrill when I read them fisrt time as other oop classics. I think the part III on logical design is a mistake. There are lots of very good books teaching us how to write functions, oragnizing interfaces. I learned very little from those 200+ pages.
5.0 out of 5 stars Must read for software engineers,
This review is from: Large-Scale C++ Software Design (Paperback)This book is a classic. Whatever language you write your code in, this book will teach you how to build better systems, how to improve the chances of your project succeeding. One of those books in my library that have literally been read to pieces.
Most Helpful First | Newest First
Large-Scale C++ Software Design by John Lakos (Paperback - July 10 1996)
CDN$ 78.99 CDN$ 49.76
Usually ships in 3 to 4 weeks