'Good code' is code that works, is bug free, and is readable and maintainable. Some organizations have coding 'standards' that all developers are supposed to adhere to, but everyone has different ideas about what's best, or what is too many or too few rules. There are also various theories and metrics, such as McCabe Complexity metrics. It should be kept in mind that excessive use of standards and rules can stifle productivity and creativity. 'Peer reviews', 'buddy checks' code analysis tools, etc. can be used to check for problems and enforce standards.
For C and C++ coding, here are some typical ideas to consider in setting rules/standards; these may or may not apply to a particular situation:
Ø minimize or eliminate use of global
variables.
Ø use descriptive function and method
names - use both upper and lower case, avoid abbreviations, use as many
characters as necessary to be adequately descriptive (use of more than 20
characters is not out of line); be consistent in naming conventions.
Ø use descriptive variable names - use
both upper and lower case, avoid abbreviations, use as many characters as
necessary to be adequately descriptive (use of more than 20 characters is not
out of line); be consistent in naming conventions.
Ø function and method sizes should be
minimized; less than 100 lines of code is good, less than 50 lines is
preferable.
Ø function descriptions should be
clearly spelled out in comments preceding a function's code.
Ø organize code for readability.
Ø use whitespace generously - vertically
and horizontally
Ø each line of code should contain 70
characters max.
Ø one code statement per line.
Ø coding style should be consistent
throught a program (eg, use of brackets, indentations, naming conventions,
etc.)
Ø in adding comments, err on the side of
too many rather than too few comments; a common rule of thumb is that there
should be at least as many lines of comments (including header blocks) as lines
of code.
Ø no matter how small, an application
should include documentaion of the overall program function and flow (even a
few paragraphs is better than nothing); or if possible a separate flow chart
and detailed program documentation.
Ø make extensive use of error handling
procedures and status and error logging.
Ø for C++, to minimize complexity and
increase maintainability, avoid too many levels of inheritance in class
heirarchies (relative to the size and complexity of the application). Minimize
use of multiple inheritance, and minimize use of operator overloading (note
that the Java programming language eliminates multiple inheritance and operator
overloading.)
Ø for C++, keep class methods small,
less than 50 lines of code per method is preferable.
for C++, make liberal use of exception handlers
No comments:
Post a Comment