| Make member data private. |
| Do not return non-const handles to class data from const member functions. |
| Do not write member functions which return non const pointers or references to data less accessible than the member function. |
| Ensure friends have a legitimate basis in design, otherwise avoid. |
| When publicly deriving from a base class, the base class should be abstract. |
| Write derived classes to have at most one base class which is not a pure abstract class. |
| All members of a public base class must be valid for a derived class. |