Difference between revisions of "Cpp Coding Standards/DESIGN"
From Apache OpenOffice Wiki
m (→Avoid Global Data <span id="NoGlob">(NoGlob)</span>) |
m (formatting) |
||
Line 1: | Line 1: | ||
− | + | === Design (DESIGN) - Summary === | |
+ | ''General design rules.'' | ||
− | + | ===== No Cyclic Dependencies <span id="CyclDep">(CyclDep)</span> ===== | |
− | + | Avoid cyclic dependencies. [[/CyclDep|-> Details]] | |
− | = | + | |
− | ==== No Cyclic Dependencies <span id="CyclDep">(CyclDep)</span> ==== | + | |
− | Avoid cyclic dependencies. | + | |
− | [[/ | + | ===== Dependency Inversion Principle <span id="DIP">(DIP)</span> ===== |
+ | Use the dependency inversion principle. Prefer to define functionality in abstract interfaces and to inherit from them. Avoid state in abstract classes. [[/DIP|-> Details]] | ||
− | ==== | + | ===== No Premature Generalization <span id="PremGen">(PremGen)</span> ===== |
− | + | As a rule of thumb, don't generalize before the second occurrence and no later than the third. [[/PremGen|-> Details]] | |
− | [[/ | + | ===== Global Data Initialization <span id="GlobInit">(GlobInit)</span> ===== |
+ | Avoid cross module dependencies when initializing global data. Never let a global object's initialization depend on another global object in a different compilation unit. [[/GlobInit|-> Details]] | ||
− | = | + | ===== Avoid Global Data <span id="NoGlob">(NoGlob)</span> ===== |
− | + | Minimize the use of global data. For objects in global scope that are meant to be local to the implementation of a class use an anonymous namespace. [[/NoGlob|-> Details]] | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | ==== Avoid Global Data <span id="NoGlob">(NoGlob)</span> ==== | + | |
− | Minimize the use of global data. For objects in global scope that are meant to be local to the implementation of a class use an anonymous namespace. | + | |
− | + | ||
− | [[/NoGlob|Details]] | + | |
---- | ---- | ||
[[Category:Coding Standards]] | [[Category:Coding Standards]] |
Revision as of 13:20, 12 April 2007
Contents
Design (DESIGN) - Summary
General design rules.
No Cyclic Dependencies (CyclDep)
Avoid cyclic dependencies. -> Details
Dependency Inversion Principle (DIP)
Use the dependency inversion principle. Prefer to define functionality in abstract interfaces and to inherit from them. Avoid state in abstract classes. -> Details
No Premature Generalization (PremGen)
As a rule of thumb, don't generalize before the second occurrence and no later than the third. -> Details
Global Data Initialization (GlobInit)
Avoid cross module dependencies when initializing global data. Never let a global object's initialization depend on another global object in a different compilation unit. -> Details
Avoid Global Data (NoGlob)
Minimize the use of global data. For objects in global scope that are meant to be local to the implementation of a class use an anonymous namespace. -> Details