You are here: CodeIdol.com > C++ > C++ Coding Standards: 101 Rules, Guidelines, and Best Practices
C++ Coding Standards: 101 Rules, Guidelines, and Best Practices
1. Compile cleanly at high warning levels SummaryDiscussionExamplesExceptionsReferences...
2. Use an automated build system SummaryDiscussionReferences...
3. Use a version control system SummaryDiscussionExceptionsReferences...
4. Invest in code reviews SummaryDiscussionReferences...
5. Give one entity one cohesive responsibility SummaryDiscussionExamplesReferences...
6. Correctness, simplicity, and clarity come first SummaryDiscussionExamplesReferences...
7. Know when and how to code for scalability SummaryDiscussionReferences...
8. Don't optimize prematurely SummaryDiscussionExamplesExceptionsReferences...
9. Don't pessimize prematurely SummaryDiscussionReferences...
10. Minimize global and shared data SummaryDiscussionExceptionsReferences...
11. Hide information SummaryDiscussionExceptionsReferences...
12. Know when and how to code for concurrency SummaryDiscussionReferences...
13. Ensure resources are owned by objects. Use explicit RAII and smart pointers SummaryDiscussionExceptionsReferences The CHM file was converted to HTM by Trial version...
14. Prefer compile- and link-time errors to run-time errors SummaryDiscussionExamplesExceptionsReferences...
15. Use const proactively SummaryDiscussionExamplesReferences...
16. Avoid macros SummaryDiscussionExamplesExceptionsReferences...
17. Avoid magic numbers SummaryDiscussionExamplesReferences...
18. Declare variables as locally as possible SummaryDiscussionExceptionsReferences...
19. Always initialize variables SummaryDiscussionExamplesExceptionsReferences...
20. Avoid long functions. Avoid deep nesting SummaryDiscussionExceptionsReferences...
21. Avoid initialization dependencies across compilation units SummaryDiscussionReferences...
22. Minimize definitional dependencies. Avoid cyclic dependencies SummaryDiscussionExceptionsReferences...
23. Make header files self-sufficient SummaryDiscussionExamplesReferences...
24. Always write internal #include guards. Never write external #include guards SummaryDiscussionExceptionsReferences...
25. Take parameters appropriately by value, (smart) pointer, or reference SummaryDiscussionReferences...
26. Preserve natural semantics for overloaded operators SummaryDiscussionExceptionsReferences...
None 27. Prefer the canonical forms of arithmetic and assignment operators SummaryDiscussionExamplesExceptionsReferences...
28. Prefer the canonical form of ++ and --. Prefer calling the prefix forms SummaryDiscussionExceptionsReferences The CHM file was converted to HTM by Trial...
29. Consider overloading to avoid implicit type conversions SummaryDiscussionReferences...
30. Avoid overloading &&, ||, or , (comma) SummaryDiscussionExamplesExceptionsReferences...
31. Don't write code that depends on the order of evaluation of function arguments SummaryDiscussionReferences The CHM file was converted to HTM by Trial...
32. Be clear what kind of class you're writing SummaryDiscussionReferences...
33. Prefer minimal classes to monolithic classes SummaryDiscussionReferences...
34. Prefer composition to inheritance SummaryDiscussionExceptionsReferences...
35. Avoid inheriting from classes that were not designed to be base classes SummaryDiscussionExamplesReferences The CHM file was converted to HTM by Trial version...
36. Prefer providing abstract interfaces SummaryDiscussionExamplesExceptionsReferences...
37. Public inheritance is substitutability. Inherit, not to reuse, but to be reused SummaryDiscussionExceptionsReferences The CHM file was converted to HTM by Trial version...
38. Practice safe overriding SummaryDiscussionExamplesReferences...
39. Consider making virtual functions nonpublic, and public functions nonvirtual SummaryDiscussionExceptionsReferences...
40. Avoid providing implicit conversions SummaryDiscussionExamplesExceptionsReferences...
41. Make data members private, except in behaviorless aggregates (C-style structs) SummaryDiscussionExamplesExceptionsReferences...
42. Don't give away your internals SummaryDiscussionExceptionsReferences...
43. Pimpl judiciously SummaryDiscussionExceptionsReferences...
44. Prefer writing nonmember nonfriend functions SummaryDiscussionExamplesReferences...
45. Always provide new and delete together SummaryDiscussionExceptionsReferences...
46. If you provide any class-specific new, provide all of the standard forms (plain, in-place, and nothrow) SummaryDiscussionReferences The CHM file was converted to...
47. Define and initialize member variables in the same order SummaryDiscussionReferences...
48. Prefer initialization to assignment in constructors SummaryDiscussionExceptionsReferences...
49. Avoid calling virtual functions in constructors and destructors SummaryDiscussionExamplesReferences...
50. Make base class destructors public and virtual, or protected and nonvirtual SummaryDiscussionExamplesExceptionsReferences The CHM file was converted to HTM by Trial version of...
51. Destructors, deallocation, and swap never fail SummaryDiscussionReferences...
52. Copy and destroy consistently SummaryDiscussionExceptionsReferences...
53. Explicitly enable or disable copying SummaryDiscussionReferences...
54. Avoid slicing. Consider Clone instead of copying in base classes SummaryDiscussionExceptionsReferences...
55. Prefer the canonical form of assignment SummaryDiscussionReferences...
56. Whenever it makes sense, provide a no-fail swap (and provide it correctly) SummaryDiscussionExceptionsReferences The CHM file was converted to HTM by Trial version...
57. Keep a type and its nonmember function interface in the same namespace SummaryDiscussionExamplesReferences The CHM file was converted to HTM by Trial version...
58. Keep types and functions in separate namespaces unless they're specifically intended to work together SummaryDiscussionReferences The CHM file was converted to HTM by...
59. Don't write namespace usings in a header file or before an #include SummaryDiscussionExceptionsReferences The CHM file was converted to HTM by Trial version...
60. Avoid allocating and deallocating memory in different modules SummaryDiscussionReferences...
61. Don't define entities with linkage in a header file SummaryDiscussionExceptionsReferences...
62. Don't allow exceptions to propagate across module boundaries SummaryDiscussionReferences...
Use sufficiently portable types in a module's interface SummaryDiscussionExamplesReferences...
64. Blend static and dynamic polymorphism judiciously SummaryDiscussionReferences...
65. Customize intentionally and explicitly SummaryDiscussionReferences...
66. Don't specialize function templates SummaryDiscussionExamplesReferences...
67. Don't write unintentionally nongeneric code SummaryDiscussionExceptionsReferences...
68. Assert liberally to document internal assumptions and invariants SummaryDiscussionExamplesReferences...
69. Establish a rational error handling policy, and follow it strictly SummaryDiscussionReferences...
70. Distinguish between errors and non-errors SummaryDiscussionExamplesReferences...
71. Design and write error-safe code SummaryDiscussionExamplesReferences...
72. Prefer to use exceptions to report errors SummaryDiscussionExamplesExceptionsReferences...
73. Throw by value, catch by reference...
74. Report, handle, and translate errors appropriately SummaryDiscussionExceptionsReferences...
75. Avoid exception specifications SummaryDiscussionExceptionsReferences...
76. Use vector by default. Otherwise, choose an appropriate container SummaryDiscussionExamplesReferences...
77. Use vector and string instead of arrays SummaryDiscussionReferences...
78. Use vector (and string::c_str) to exchange data with non-C++ APIs SummaryDiscussionReferences...
79. Store only values and smart pointers in containers SummaryDiscussionExamplesReferences...
80. Prefer push_back to other ways of expanding a sequence...
81. Prefer range operations to single-element operations SummaryDiscussionExamplesReferences...
82. Use the accepted idioms to really shrink capacity and really erase elements SummaryDiscussionExceptionsReferences The CHM file was converted to HTM by Trial version...
83. Use a checked STL implementation SummaryDiscussionExamplesReferences...
84. Prefer algorithm calls to handwritten loops SummaryDiscussionExamplesExceptionsReferences...
85. Use the right STL search algorithm SummaryDiscussionReferences...
86. Use the right STL sort algorithm SummaryDiscussionExamplesExceptionsReferences...
87. Make predicates pure functions SummaryDiscussionExamplesReferences...
88. Prefer function objects over functions as algorithm and comparer arguments SummaryDiscussionReferences...
89. Write function objects correctly SummaryDiscussionReferences...
90. Avoid type switching; prefer polymorphism SummaryDiscussionExamplesReferences...
91. Rely on types, not on representations SummaryDiscussionReferences...
92. Avoid using reinterpret_cast SummaryDiscussionExceptionsReferences...
93. Avoid using static_cast on pointers SummaryDiscussionReferences...
94. Avoid casting away const SummaryDiscussionExceptionsReferences...
95. Don't use C-style casts SummaryDiscussionReferences...
96. Don't memcpy or memcmp non-PODs SummaryDiscussionReferences...
97. Don't use unions to reinterpret representation SummaryDiscussionExceptionsReferences...
98. Don't use varargs (ellipsis) SummaryDiscussionReferences...
99. Don't use invalid objects. Don't use unsafe functions SummaryDiscussionReferences...
100. Don't treat arrays polymorphically SummaryDiscussionReferences...
You are here: CodeIdol.com > C++ > C++ Coding Standards: 101 Rules, Guidelines, and Best Practices
ADBRITE ads links
Related tags
Popular Categories
Unix books and guides
AJAX popular information
C# language guides
Windows books and cookbooks
.......