Watch for long argument lists
Break it down into
using relationships passing objects (as const references whenever possible) to
functions
Dont repeat yourself!
If a piece of code is
recurring in many operations, pull it out to be in a common base class
Dont extend
functionality by building derived classes
If an interface
element is essential to a class it should be in the base class
not added onto the end
If you are adding
operations by inheriting, you might want to rethink your design!