Make object orientation a choice, not a default. [Using OO ]
Choose object orientation using appropriate criteria. [Criteria ]
Don't use restricted hashes. [Restricted Hashes ]
Always use fully encapsulated objects. [Encapsulation ]
Give every constructor the same standard name. [Constructors ]
Don't let a constructor clone objects. [Cloning ]
Always provide a destructor for every inside-out class. [Destructors ]
When creating methods, follow the general guidelines for subroutines. [Methods ]
Provide separate read and write accessors. [Accessors ]
Don't use lvalue accessors. [Lvalue Accessors ]
Provide an optimal interface, rather than a minimal one. [Class Interfaces ]
Overload only the isomorphic operators of algebraic classes. [Operator Overloading ]
Always consider overloading the boolean, numeric, and string coercions of objects. [Coercions ]