Difference between revisions of "Tmp2"

From assela Pathirana
Jump to navigationJump to search
Line 60: Line 60:
..
..
</source>
</source>
* Use indenting and comments to make multiple loops easy to read.  
* 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 <tt>end of loop i</tt> at the place where the loop is closed.  
<source lang=cpp>
<source lang=cpp>
for (int i=0;i<n;i++){
for (int i=0;i<n;i++){
   for (int j=0;j<m;j++){
   for (int j=0;j<m;j++){
       a=b[i];
       a=b[i];
       //... 559 lines of code
       //... 559 lines of code -- we don't print them here
   } // end of loop j
   } // end of loop j
   //... another 400 lines of code
   //... another 400 lines of code -- again we skip.
} // end of loop i
} // end of loop i
</source>
</source>

Revision as of 15:51, 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.
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 i at the place where the loop is closed.
for (int i=0;i<n;i++){
   for (int j=0;j<m;j++){
       a=b[i];
       //... 559 lines of code -- we don't print them here
   } // end of loop j
   //... another 400 lines of code -- again we skip. 
} // end of loop i