Difference between revisions of "Cpp Coding Standards/DESIGN"

From Apache OpenOffice Wiki
Jump to: navigation, search
m (Avoid Global Data <span id="NoGlob">(NoGlob)</span>)
m (formatting)
Line 1: Line 1:
Topic-Id: '''DESIGN'''
+
=== Design (DESIGN) - Summary ===
 +
''General design rules.''
  
General design rules.
+
===== No Cyclic Dependencies <span id="CyclDep">(CyclDep)</span> =====
----
+
Avoid cyclic dependencies. [[/CyclDep|-> Details]]
=== Summary ===
+
==== 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]]
  
==== Dependency Inversion Principle <span id="DIP">(DIP)</span> ====
+
===== No Premature Generalization <span id="PremGen">(PremGen)</span> =====
Use the dependency inversion principle. Prefer to define functionality in abstract interfaces and to inherit from them. Avoid state in abstract classes.
+
As a rule of thumb, don't generalize before the second occurrence and no later than the third. [[/PremGen|-> Details]]
  
[[/DIP|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]]
  
==== No Premature Generalization <span id="PremGen">(PremGen)</span> ====
+
===== Avoid Global Data <span id="NoGlob">(NoGlob)</span> =====
As a rule of thumb, don't generalize before the second occurrence and no later than the third.
+
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]]
 
+
[[/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]]
+
  
 
----
 
----
 
[[Category:Coding Standards]]
 
[[Category:Coding Standards]]

Revision as of 13:20, 12 April 2007

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


Personal tools