One of my favorite Robert Martin's books, Agile Software Development Priciples, Patterns and Practices. I like especially the Priciples part of the book:
- Single-Responsibility
- Open-Closed Principle
- The Liskov Substitution Principle
- Dependency-inversion Principle
- Interface-Segregation Principle
A good review of the book by David Hayden:
http://codebetter.com/blogs/david.hayden/archive/2005/06/17/64766.aspx

Follow on Twitter