Difference between revisions of "Tmp2"

From assela Pathirana
Jump to navigationJump to search
Line 32: Line 32:
|}
|}
==Variables==
==Variables==
* Define variables with minimum scope. If you just need a variable to use for a counter in a loop, don't define it as a global variable. In <tt>for</tt> loops define the counter within the <tt>for</tt> statement.  
* Define variables with minimum scope. If you just need a variable to use for a counter in a loop, don't define it as a global variable. In <tt>for</tt> loops define the counter within the <tt>for</tt> statement. And when you have to define a global variable, use a good descriptive name.  
<source lang=cpp>
<source lang=cpp>
for(unsigned int i=0;i<vect.size();i++){ // much better than a globally defined i.  
for(unsigned int i=0;i<vect.size();i++){ // much better than a globally defined i.  
   ...
   ...
}
}
</source>
</source>



Revision as of 15:55, 9 April 2007

Good practice in Coding (in C++/C)

Keep complications to minimum

  • Use pointers sparingly, there are many situations where they have good alternatives. Make a concious effort to find these alternatives if at all possible. One good example is use of vectors instead of dynamic arrays.
int* a = NULL;   // Pointer to int, initialize to nothing.
int n;           // Size needed for array
cin >> n;        // Read in the size
a = new int[n];  // Allocate n ints and save ptr in a.
for (int i=0;i<n;i++){
    cin >> a[i];
}
...
... 
delete [] a;  // When done, free memory pointed to by a.
a = NULL;     // Clear a to prevent using invalid memory reference.
vector <int> a;
int n;           // Size needed for array
cin >> n;        // Read in the size
for (int i=0;i<n;i++){
    int tmp;
    cin >> tmp;
    a.push_back(tmp);
|}
...
...
a.erase();  // When done, free memory pointed to by a.

Variables

  • Define variables with minimum scope. If you just need a variable to use for a counter in a loop, don't define it as a global variable. In for loops define the counter within the for statement. And when you have to define a global variable, use a good descriptive name.
for(unsigned int i=0;i<vect.size();i++){ // much better than a globally defined i. 
   ...
}

Loops

  • For loops without braces are sometimes possible. But do a favor, don't do it!
for (int i=0;i<n;i++)
    // foo
    // bar
    cout << str[i]; // perfrectly correct, loop ends here. BUT CONFUSING. 
c=a+b
..
..
for (int i=0;i<n;i++){
    // foo
    // bar
    cout << str[i];
} //much better way. 
c=a+b
..
..
  • Use indenting and comments to make multiple loops easy to read. In long loops like the code shown below it really helps to have the comments like end of loop cti at the place where the loop is closed. And the use of 'funny' counters like cti and jj is not an accident. In long code, avoid using one letter variable names, unless the scope of these variables are very short -- this make search and find easy.
for (int cti=0;cti<n;cti++){
   for (int jj=0;jj<m;jj++){
       a=b[cti];
       //... 559 lines of code -- we don't print them here
       ...
   } // end of loop jj
   //... another 400 lines of code -- again we skip. 
   ...
} // end of loop cti