Difference between revisions of "Cpp Coding Standards/DESIGN"
From Apache OpenOffice Wiki
m |
m |
||
(6 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | == Design == | + | == Design (DESIGN) == |
− | General design rules. | + | ''General design rules.'' |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | ==== | + | ===== No Cyclic Dependencies <span id="CyclDep">(CyclDep)</span> ===== |
− | + | Avoid cyclic dependencies. [[/CyclDep|-> Details]] | |
− | ==== | + | ===== 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> ===== |
− | Minimize the use of global data. For objects in global scope that are meant to be local to a class | + | 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]] | ||
---- | ---- | ||
[[Category:Coding Standards]] | [[Category:Coding Standards]] |
Latest revision as of 09:03, 23 May 2007
Contents
Design (DESIGN)
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