Large-Scale C++ Software Design (Addison-Wesley Professional Computing Series)
K**S
Must read for software architects
Lakos really rubs your nose into the fact that every change to a header file has (potentially far-reaching) consequences. He formally introduces some concepts that every programmer has a vague idea about but never really stops to think about. If you want to write a system with thousands of components and you want to be able to expand and maintain that system for years to come, then this book is an essential read. Every serious software company should own at least one copy.I do have some problems with the age of the C++ code in the book. Many of his examples are outdated (they were written even before the C++98 standard) and it shows. You have to mentally do the conversion of his examples to more modern C++ (using e.g. the guidelines in C++ Coding Standards : Rules, Guidelines, and Best Practices ).So if you can read past the aging C++ code, this book comes highly recommended to experienced (or aspiring) software architects. I wouldn't recommend it to the novice since it can be daunting at times.
J**N
Very good
Good book for advanced c++ topics. Not for beginners
D**S
Great source of information on system design
If you are serious about nontrivial C++ system design you should buy this book. I have read many books on object oriented desing, design patterns, refactoring and so on. However, none of those books mentioned placed much emphasis on physical design. This is strange, given that a solid physical design is crucial for creating maintainable, understandable components. As mentioned by other reviewers it is a tough read, but that is a small price to pay for the information that is on offer.
T**K
Excellent book on the physical architecture of C++ applications
This book assumes you're already proficient in C++ and basic OOP design principles, and considers design at a level one higher than individual classes. You'll learn how to arrange your classes into modules and packages, and then how to organise communication within and between these higher-level constructs. Nonetheless, the book never forgets that the important thing is working C++ code, not diagrams and acronyms, so it's always practical.There are two core advantages to the designs discussed in this book: maintaining the correct level of abstraction, and reducing recompilation times. Performance issues always run the risk of becoming outdated fairly quickly, and to a certain extent, some of the timing material is no longer relevant. In particular, Sutter and Alexandrescu, in C++ Coding Standards, explicitly disavow the advocated method of external header guards. Additionally, although namespaces are mentioned, they are not used much, and the older method of using prefixes is recommended instead.The last part of the book drops down to more low level concerns, such as Schwarz counters, operators, and function arguments. This leans heavily on the likes of Effective C++, C++ Strategy And Tactics and C++ Programming Style, and to be honest, you'd be better off looking in more modern books for up to date best practices. For example, in this book assignment is implemented through the copy-and-destroy idiom, which is nowadays considered to be a mistake.But this is a big book, and you won't be buying it for the lower-level stuff, but for the large amount of higher level material that makes up the bulk. The main practices and metrics remain extremely relevant, the text is clear and well written. And there just isn't many other places where you can go and read about this sort of stuff. It's a must-read.
Trustpilot
Hace 3 días
Hace 2 meses