Robert C. Martin collected ten principles dealing with object-oriented design. The first five of them—the so-called SOLID principles— deal with the design of classes:
Then there are three principles about package cohesion:
The last three principles deal with package coupling:
Discuss this wiki article and the collection on the corresponding talk page.