Difference between revisions of "Cpp Coding Standards/DESIGN"
From Apache OpenOffice Wiki
m |
|||
Line 1: | Line 1: | ||
− | + | Topic-Id: '''DESIGN''' | |
+ | |||
General design rules. | General design rules. | ||
---- | ---- | ||
=== Summary === | === Summary === | ||
− | ==== | + | ==== No Cyclic Dependencies <span id="CyclDep">(CyclDep)</span> ==== |
Avoid cyclic dependencies. | 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. | 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. | 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. | 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 a class' implementation use an anonymous namespace. | Minimize the use of global data. For objects in global scope that are meant to be local to a class' implementation use an anonymous namespace. | ||
+ | |||
+ | [[/NoGlob|Details]] | ||
---- | ---- | ||
[[Category:Coding Standards]] | [[Category:Coding Standards]] |
Revision as of 14:23, 29 November 2006
Topic-Id: DESIGN
General design rules.
Contents
Summary
No Cyclic Dependencies (CyclDep)
Avoid cyclic dependencies.
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.
No Premature Generalization (PremGen)
As a rule of thumb, don't generalize before the second occurrence and no later than the third.
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.
Avoid Global Data (NoGlob)
Minimize the use of global data. For objects in global scope that are meant to be local to a class' implementation use an anonymous namespace.