Difference between revisions of "Tmp2"
From assela Pathirana
Jump to navigationJump to search
(→Loops) |
|||
Line 73: | Line 73: | ||
} // end of loop cti | } // end of loop cti | ||
</source> | </source> | ||
==Structure== | |||
* Use functions to modularize your code. | |||
* Do not re-invent the wheel. First see whether there is a standard function to do something (for many simple calculations there is), before writing one yourself. | |||
* |
Revision as of 16:00, 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
Structure
- Use functions to modularize your code.
- Do not re-invent the wheel. First see whether there is a standard function to do something (for many simple calculations there is), before writing one yourself.