Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
terralib:convencaoprograma [2008/04/02 09:55]
laercio
terralib:convencaoprograma [2008/04/02 16:22] (current)
laercio
Line 17: Line 17:
 } }
 </​code>​ </​code>​
 +
 ====== Preprocessador ====== ====== Preprocessador ======
   * Use '#​include " ... "’ for collocated header files and '#​include <​...>'​ for external header files   * Use '#​include " ... "’ for collocated header files and '#​include <​...>'​ for external header files
-  * Place preprocessor include guard in header files+  * Place preprocessor include guard (macros associadas a arquivos include) ​in header files
   * Use #if. . #endif and #if def . . #endif instead of "/* . . .*/" comments to hide blocks of code   * Use #if. . #endif and #if def . . #endif instead of "/* . . .*/" comments to hide blocks of code
   * Use macros sparingly   * Use macros sparingly
   * Do not use "#​define"​ to define constants – declare static const variables instead   * Do not use "#​define"​ to define constants – declare static const variables instead
 +
 +===== Example =====
 +<code cpp>
 +#ifndef TE_CONNECTION_POOL_H
 +#define TE_CONNECTION_POOL_H
 +....
 +static const float TeMaxFloat = 3.4e37;
 +....
 +#endif // end TE_CONNECTION_POOL_H
 +</​code>​
 +
  
  
Line 30: Line 42:
   * Do not define enumerations using macros or integer constants   * Do not define enumerations using macros or integer constants
   * Declare enumerations within a namespace or class   * Declare enumerations within a namespace or class
 +
 +===== Example =====
 +<code cpp>
 +typedef std::​pair<​TeLine,​ double> TeLineLength;​
 +typedef std::​vector<​lineLength>​ TeLineSizes;​
 +
 +enum TeSelectionMode
 +{
 +  TeSelectionModeDefault,​  ​ //!< default selection
 +  TeSelectionModeTePointed,​  ​ //!< object pointed
 +  TeSelectionModeTeQueried,​  ​ //!< object queried
 +  TeSelectionModeTePointedQueried //!< object pointed and queried
 +}
 +</​code>​
 +
  
 ====== Escopo ====== ====== Escopo ======
   * Declare for-loop iteration variables inside of for statements   * Declare for-loop iteration variables inside of for statements
 +===== Example ===== 
 +<code cpp> 
 +for (int i = 0; i < 10; i++) 
 +</​code>​
  
  
Line 100: Line 130:
 } }
 </​code>​ </​code>​
 +
  
  
Line 106: Line 137:
  
   * Use C++ casting operators instead of C-style casts. Ex:<code cpp>   * Use C++ casting operators instead of C-style casts. Ex:<code cpp>
-short a=2000;+short a = 2000;
 int b; int b;
 b = (int) a;    // c-like cast notation - Ok only for fundamental data types b = (int) a;    // c-like cast notation - Ok only for fundamental data types
  
-double d=3.14159265;​+double d = 3.14159265;
 int i = static_cast<​int>​(d);​ // No need for this cast int i = static_cast<​int>​(d);​ // No need for this cast
 </​code>​ </​code>​
Line 143: Line 174:
   * Zero pointers after deletion   * Zero pointers after deletion
   * Use the **new** and **delete** operators instead of **malloc()** and **free()**   * Use the **new** and **delete** operators instead of **malloc()** and **free()**
 +
  
  
Line 151: Line 183:
   * Do not test for equality with true   * Do not test for equality with true
   * Replace repeated non-trivial expressions with equivalent methods   * Replace repeated non-trivial expressions with equivalent methods
-  * Use size-t variables for simple loop iteration and array subscripts+  * Use **size-t** variables for simple loop iteration and array subscripts
   * Use a dummy template function to eliminate warnings for unused variables   * Use a dummy template function to eliminate warnings for unused variables
 +
  
  
 ====== Fluxo de Controle ====== ====== Fluxo de Controle ======
  
-  * Avoid break and continue in iteration statements +  * Avoid **break** and **continue** in iteration statements 
-  * Avoid multiple return statements in functions +  * Avoid multiple ​**return** statements in functions 
-  * Do not use goto +  * Do not use **goto** 
-  * Do not use try . .throw. .catch to manage control flow +  * Do not use **try .. throw .. catch** to manage control flow 
-  * Never use setjmp() or longjmp() in a C++ program +  * Never use **setjmp()** or **longjmp()** in a C++ program 
-  * Always code a break statement in the last case of a switch statement+  * Always code a **break** statement in the last case of a switch statement 
  
  
Line 173: Line 207:
   * Manage resources with RAII for exception safety   * Manage resources with RAII for exception safety
   * Catch exceptions by reference, not by value   * Catch exceptions by reference, not by value
-  * Do not discard exception information if you throw a new exception within a catch block+  * Do not discard exception information if you throw a new exception within a **catch** block
   * Avoid throwing exceptions in destructors   * Avoid throwing exceptions in destructors
  

Navigation