- Don't use = in an if statement expression, unless it is absolutely necessary.
- Define a macro EQ for ==, and never use ==.
- Define macros for &, |, &&, and ||.
- Define macros for BOOL, TRUE, and FALSE.
- Use only Boolean-valued expressions in if statements.
- Use only Boolean variables with the logical operators && and ||.
- Do all assignments as separate statements, not as part of a more complex expression.
- Use parentheses in expressions to explicitly define order of evaluation.
- Don't use %i format specifications or numbers that begin with 0.
- Be sure to code addresses for arguments to scanf and similar functions.
- Always enclose conditional code in braces.
- Do all assignments as separate statements, not as part of a more complex expression.
- Use parentheses around expressions on return statements.
- Never use the C switch statement.
- Place the opening /* and closing */ for comments on lines by themselves, and use a | to begin each line of comment text.
- Declare C arrays with one extra element, and don't use the element with subscript 0.
- Use macros to define tables and loops over them.
- Always guard a string assignment against overwriting the target variable.
- Create macros and functions to define strings and provide "safe" string operations.
- Declare functions static if you intend to call them only from within the same source file.
- Use the most restricted visibility possible for variables; avoid shared variables.
- Put all external declarations before the first function definition in a file.
- Put functions that must share data and external declarations for their shared variables in a file by themselves.
- Use EXPORT, SHARE, and IMPORT macros to clarifythe intended visibility of a variable.
- For non-array "output" or "input/output" parameters, use local variables instead of dereferenced parameters in function calculations.
- Use array notation instead of pointers anddereferencing when you're working with arrays.
- When working with pointers in assignment statements, double-check that you're using the right level of indirection.
- Unless you're positive a pointer has been initialized, check it for NULL before using it.
- Use a new_string function to return new strings from functions.
- Always check for a NULL return value after calling malloc.
- Use the allocate macro to prevent memory "leakage."
- Always initialize pointers in their definitions.
- Use typedef and PTR, contents_of, and address_of macros to improve program readability.
- Avoid popular, but tricky, C idioms for business application programming.
- Don't use ++ or - in assignments.
by
updated