There are five principles of class design (aka SOLID):
* (SRP) The Single Responsibility Principle
* (OCP) The Open Closed Principle
* (LSP) The Liskov Substitution Principle
* (ISP) The Interface Segregation Principle
* (DIP) The Dependency Inversion Principle
There are three principles of package cohesion
* (REP) The Reuse Release Equivalence Principle
* (CCP) The Common Closure Principle
* (CRP) The Common Reuse Principle
There are three principles of package coupling
* (ADP) The Acyclic Dependencies Principle
* (SDP) The Stable Dependencies Principle
* (SAP) The Stable Abstractions Principle
[http://c2.com/cgi/wiki?PrinciplesOfObjectOrientedDesign]