Difference between revisions of "Cpp Coding Standards/GEN"

From Apache OpenOffice Wiki
Jump to: navigation, search
m (typing)
m (format)
Line 1: Line 1:
 
Topic-Id: '''GEN'''. General advice for coding.
 
Topic-Id: '''GEN'''. General advice for coding.
 
----
 
----
=== Summary ===
+
==== Summary ====
==== Const Correctness <span id="Const">(Const)</span> ====
+
===== Const Correctness <span id="Const">(Const)</span> =====
Make every member function const that does not change the logical state of its class. Use “mutable” to distinguish logical from physical state.
+
* Make every member function const that does not change the logical state of its class. Use “mutable” to distinguish logical from physical state.
 
+
*Prefer constants over variables wherever possible. [[/Const|-&gt; Details]]
Prefer constants over variables wherever possible. [[/Const|-&gt; Details]]
+
===== Resource Allocation is Initialization <span id="RAII">(RAII)</span> =====
 
+
* Use the “Resource allocation is initialization” (RAII) idiom to manage resources.
==== Resource Allocation is Initialization <span id="RAII">(RAII)</span> ====
+
* Use smart pointers for objects on the heap. [[/RAII|-> Details]]
Use the “Resource allocation is initialization” (RAII) idiom to manage resources.
+
===== Avoid Duplicate Code <span id="Dupli">(Dupli)</span> =====
 
+
Use smart pointers for objects on the heap. [[/RAII|-> Details]]
+
==== Avoid Duplicate Code <span id="Dupli">(Dupli)</span> ====
+
 
Avoid and remove duplicate code. Duplicate code may be okay, if otherwise dependencies among so far unrelated modules would be created. Among constructors of the same class some code duplication is okay. [[/Dupli|-> Details]]
 
Avoid and remove duplicate code. Duplicate code may be okay, if otherwise dependencies among so far unrelated modules would be created. Among constructors of the same class some code duplication is okay. [[/Dupli|-> Details]]
==== Initialize Everything Immediately <span id="Init">(Init)</span> ====
+
===== Initialize Everything Immediately <span id="Init">(Init)</span> =====
 
Initialize all variables at declaration.  
 
Initialize all variables at declaration.  
  
Line 19: Line 16:
  
 
Preferably mention every data member, including the default constructed ones, in the constructor's initialization section. [[/Init|-> Details]]
 
Preferably mention every data member, including the default constructed ones, in the constructor's initialization section. [[/Init|-> Details]]
==== Optimize Later <span id="Opti">(Opti)</span> ====
+
===== Optimize Later <span id="Opti">(Opti)</span> =====
 
Do not optimize before you really know there is a performance problem. Use inline sparingly. However do optimize in algorithm complexity. [[/Opti|-> Details]]
 
Do not optimize before you really know there is a performance problem. Use inline sparingly. However do optimize in algorithm complexity. [[/Opti|-> Details]]
==== Clear Origin of Local Data <span id="LocalData">(LocalData)</span> ====
+
===== Clear Origin of Local Data <span id="LocalData">(LocalData)</span> =====
 
Use a consistent way to distinguish member data, local variables and function parameters. [[/LocalData|-> Details]]
 
Use a consistent way to distinguish member data, local variables and function parameters. [[/LocalData|-> Details]]
==== Local Conventions <span id="LocalConv">(LocalConv)</span> ====
+
===== Local Conventions <span id="LocalConv">(LocalConv)</span> =====
 
When changing code in a module, follow local naming conventions. [[/LocalConv|-> Details]]
 
When changing code in a module, follow local naming conventions. [[/LocalConv|-> Details]]
==== Matching Array Delete <span id="ArrayDel">(ArrayDel)</span> ====
+
===== Matching Array Delete <span id="ArrayDel">(ArrayDel)</span> =====
 
When using new[], employ a matching delete[] statement. [[/ArrayDel|-> Details]]
 
When using new[], employ a matching delete[] statement. [[/ArrayDel|-> Details]]
 
----
 
----
=== Related Rules ===
+
==== Related Rules ====
 
* [[../Obsolete Habits#Types |OBSOLETE:Types]] - Preferred Types  
 
* [[../Obsolete Habits#Types |OBSOLETE:Types]] - Preferred Types  
 
----
 
----
 
[[Category:Coding Standards]]
 
[[Category:Coding Standards]]

Revision as of 12:54, 12 April 2007

Topic-Id: GEN. General advice for coding.


Summary

Const Correctness (Const)
  • Make every member function const that does not change the logical state of its class. Use “mutable” to distinguish logical from physical state.
  • Prefer constants over variables wherever possible. -> Details
Resource Allocation is Initialization (RAII)
  • Use the “Resource allocation is initialization” (RAII) idiom to manage resources.
  • Use smart pointers for objects on the heap. -> Details
Avoid Duplicate Code (Dupli)

Avoid and remove duplicate code. Duplicate code may be okay, if otherwise dependencies among so far unrelated modules would be created. Among constructors of the same class some code duplication is okay. -> Details

Initialize Everything Immediately (Init)

Initialize all variables at declaration.

Every struct needs a constructor.

Preferably mention every data member, including the default constructed ones, in the constructor's initialization section. -> Details

Optimize Later (Opti)

Do not optimize before you really know there is a performance problem. Use inline sparingly. However do optimize in algorithm complexity. -> Details

Clear Origin of Local Data (LocalData)

Use a consistent way to distinguish member data, local variables and function parameters. -> Details

Local Conventions (LocalConv)

When changing code in a module, follow local naming conventions. -> Details

Matching Array Delete (ArrayDel)

When using new[], employ a matching delete[] statement. -> Details


Related Rules


Personal tools