This is an old revision of the document!
Does the program compile with no warnings?
Is the nominal path through the code clear?
Does the code avoid magic numbers?
Does the code anticipate divide-by-zero errors?
Are type conversion obvious?
Does the program avoid overflow problems?
Does the code prevent rounding errors?
Does the code avoid comparing floating point numbers for equality?
Does the code avoid using variables for more than one purpose?
Does the code reserve a parachute of memory for cleanup and exit on emergencies?
Are the if/else clauses used correctly, not reversed?
Does the normal case follow the if rather than the else?
Are complicated tests encapsuled in boolean functions calls?
Are the most common cases tested first?
Have you used structures instead of single variables to manipulate groups of related data?
Have you considered creating a class as an alternative for using a structure?
Are access routines used instead of global data?, if not, why?
Are related access routines at the same abstraction level?
Are pointer operations isoleted in routines?
Does the code validate pointers before using them?
Are pointers set to null after they're freed?
**Does the program allocate enough memory so it can shutdown gracefully if it runs out of memory?
Are pointers used only as a last resort, when no other method is available?