|
Screenshot/Image: No Screenshot/Image Uploaded
Description: Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions
Aimed at the experienced C++ programmer, Herb Sutter's Exceptional C++ tests the reader's knowledge of advanced C++ language features and idioms with several dozen programming puzzles and explanations. This book can definitely help raise your C++ class design skills to the next level.
Based on the author's Guru of the Week Web column, this book poses a series of challenging questions on the inner workings of C++, centering around generic programming with the Standard Template Library (STL), exception handling, memory management, and class design. Even if you think you know C++ well, most of these problems will teach you something more about the language and how to write more robust classes that are "exception safe" (meaning they don't throw any handled exceptions or leak resources). Don't think this is just "language lawyering," though. The author's explanations stress sound programming principles (favoring simplicity) and idioms (such as the Pimpl idiom for class design that promotes faster compile times and better maintainability, or using "smart" auto_ptrs with STL.) Judging from the range and depth of these examples, Sutter's command of the inner workings of C++ is impressive, and he does an excellent job of conveying this expertise without jargon or a lot of theory.
After reading this book, C++ designers will learn several "best practices" of how to write robust, efficient classes that are "exception safe." Chances are you'll gain a better understanding of memory management techniques and working with STL too. For the experienced developer seeking leading-edge knowledge of some of the best ways to use C++, Exceptional C++ is both a challenging and truly worthwhile source of information. --Richard Dragan
Topics covered: Advanced C++ programming tutorial, generic programming, tips for string classes, containers and STL, temporary objects, exception-safe code tutorial, virtual functions, class inheritance, the Pimpl idiom, namespaces, memory management, C++ memory areas, overloading new and delete, using smart pointer with auto_ptr, using const, casts, and hints for better performance and code maintainability.
===================================================
More Exceptional C++
Aimed at advanced C++ developers who want to hone their programming chops even further, Herb Sutter's More Exceptional C++ borrows the format of his earlier title, Exceptional C++, and delivers some of today's best-available thinking on the language in a handy and effective format. A compilation of the author's own experience and research on the thornier aspects of C++, this book will serve as a worthy resource for making sure you get the most out of this powerful language.
The concise text covers a range of challenging topics in C++ without attempting to be comprehensive. Each "item" is presented as a question to try and solve yourself before the author presents his solution, plus additional detail as needed. For most topics, Sutter ends by giving his advice on the best practices (and gotchas to avoid).
Early sections concentrate on using Standard Template Library (STL) container classes, like removing items effectively, and the subtle differences between container types. Standout sections on designing custom templates (using specialization techniques) and exception-safe classes will help you do more with your own classes. One entertaining problem here shows a number-guessing game (Mastermind) built as efficiently as possible using STL code (including expert-level use of generic functions to do much of the work).
Several problems on copy-on-write (COW) semantics for more efficient classes point out the issues surrounding code optimization. (The author argues against a simplistic approach to optimizing code, including an overreliance on inlining functions. Several times he points out the difficulty of getting COW code to work in multithreaded projects.)
There has been a debate in the C++ community for years about whether it's possible to design truly "exception-safe" classes. Sutter points out the difficulty with a precise analysis of the issues surrounding exceptions and C++ constructors. Material on the finer points of inheriting classes (including when to avoid and when to use multiple inheritance in C++) will extend your class design options. A good section here is the author's explication of how to simulate COM/Java style interfaces in C++, which isn't immediately obvious, even to experienced C++ developers.
Later sections delve into code maintenance issues, including advice for using macros, typedefs, and namespaces. (Advice on migrating existing C++ code into namespaces will help you combine legacy code with other libraries.) A final appendix shows off some benchmarks for optimizing strings using a variety of techniques.
Intelligent, provocative, and demanding, More Exceptional C++ shows why C++ continues to be a rich, complex, and challenging language. Armed with titles like this one, experienced C++ programmers can write better code and avoid pitfalls buried in the outer edges of their favorite language. --Richard Dragan
Topics covered: Puzzles and solutions to advanced topics in C++, using remove() and erase() for Standard Template Library (STL) containers, custom templates with inheritance and traits, using typename, containers used with pointers, the finer points of vector, set, and maps, potential problems with vector < bool >, post and prefix operators used with functions, templates overloading, explicit and partial template specialization (plus function template overloading), using STL to implement Mastermind (a number-guessing game), the finer points of inline functions, lazy optimizations (including copy-on-write--COW--and semantics for strings), iterators and references, gotchas in multithreaded environments, designing exception-safe classes, constructor failures and object lifetimes, uncaught exceptions (the pitfalls of using uncaught_exception()), unmanaged pointers (in parameter evaluation and auto_ptr); copy assignment, inheritance and exception safety issues, multiple inheritance dos and don'ts, the Siamese Twin problem, virtual functions, controlled polymorphism, memory management issues with smart pointers (auto_ptr), recursive declarations, how to simulate nested functions, preprocessor macros, hints for initialization, forward declarations, using typedef effectively, best practices for namespaces (including code maintenance and migrating existing C++ code to namespaces), and appendices on advice for multithreaded optimization.
===================================================
Exceptional C++ Style: 40 New Engineering Puzzles, Programming Problems, and Solutions (C++ In-Depth Series)
Herb Sutter may well know the C++ programming language better than anyone else. He's worked with the language for years; he sits on its international standards committee; he works on the Microsoft Visual C++ team--his list of qualifications is astounding. That is, however, only part of the reason you should pay attention to Exceptional C++ Style. A more important reason is that he understands how to teach software developers: To wit, he issues challenges and dares the programmers to figure them out. Sutter grasps the importance of not lecturing smart people, and knows that guided exploration goes a very long way.
To give an example of Sutter's challenges (40 of them, graded by difficulty, appear in this dense book) would take more space than is available here. Know, however, that while some of them deal with obscure parts of C++, most do not, and the majority of the challenges deal with aspects of the language you use all the time. Sutter's approach doesn't consist exclusively of challenges and solutions, either--the author takes time to distill the exercises into design recommendations, making it easy for programmers to remind themselves of what they've learned. --David Wall
Topics covered: How to take a journeyman's skill with C++ and turn it into something more masterly, by exploring the behavior of C++ and its various parts in detail. Coverage deals with inheritance and other aspects of object orientation, exception handling, memory management, and templating.
Book Description
Software "style" is about finding the perfect balance between overhead and functionality... elegance and maintainability... flexibility and excess. In Exceptional C++ Style, legendary C++ guru Herb Sutter presents 40 new programming scenarios designed to analyze not only the what but the why and help you find just the right balance in your software.
Organized around practical problems and solutions, this book offers new insight into crucial C++ details and interrelationships, and new strategies for today's key C++ programming techniques--including generic programming, STL, exception safety, and more. You'll find answers to questions like:
What can you learn about library design from the STL itself?
How do you avoid making templated code needlessly non-generic?
Why shouldn't you specialize function templates? What should you do instead?
How does exception safety go beyond try and catch statements?
Should you use exception specifications, or not?
When and how should you "leak" the private parts of a class?
How do you make classes safer for versioning?
What's the real memory cost of using standard containers?
How can using const really optimize your code?
How does writing inline affect performance?
When does code that looks wrong actually compile and run perfectly, and why should you care?
What's wrong with the design of std::string?
Exceptional C++ Style will help you design, architect, and code with style--and achieve greater robustness and performance in all your C++ software.
===================================================
C++ Coding Standards: 101 Rules, Guidelines, and Best Practices (C++ In-Depth Series)
Consistent, high-quality coding standards improve software quality, reduce time-to-market, promote teamwork, eliminate time wasted on inconsequential matters, and simplify maintenance. Now, two of the world's most respected C++ experts distill the rich collective experience of the global C++ community into a set of coding standards that every developer and development team can understand and use as a basis for their own standards.
The authors cover virtually every facet of C++ programming: design and coding style, functions, operators, class design, inheritance, construction/destruction, copying, assignment, namespaces, modules, templates, genericity, exceptions, STL containers and algorithms, and more. Each standard is described concisely, with practical examples. From type definition to error handling, this book presents C++ best practices, including some that have only recently been identified and standardized--techniques you may not know even if you've used C++ for years. Along the way, you'll find answers to questions like
What's worth standardizing--and what isn't? What are the best ways to code for scalability? What are the elements of a rational error handling policy? How (and why) do you avoid unnecessary initialization, cyclic, and definitional dependencies? When (and how) should you use static and dynamic polymorphism together? How do you practice "safe" overriding? When should you provide a no-fail swap? Why and how should you prevent exceptions from propagating across module boundaries? Why shouldn't you write namespace declarations or directives in a header file? Why should you use STL vector and string instead of arrays? How do you choose the right STL search or sort algorithm? What rules should you follow to ensure type-safe code? Whether you're working alone or with others, C++ Coding Standards will help you write cleaner code--and write it faster, with fewer hassles and less frustration.
|