C++ Coding Standards: 101 Rules, Guidelines, and Best Practices

Herb Sutter
Andrei Alexandrescu

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 coding 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 standardizingand 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 codeand write it faster, with fewer hassles and less frustration.