Practical Object Oriented Design is Excellent
I've been reading the Rough Cut of Practical Object Oriented Design, and I have been absolutely enjoying every page. It isn't very often that a technical book comes along that really strikes me as a "new classic," but this one qualifies. Sandi Metz has compiled a concise review of SOLID design principles in clear approachable language.
Don't be put off by the "in Ruby" portion of the title. If you can read code and understand the basics of design patterns, this book shouldn't pose any technical hurdles regarding the language the author uses.
One of my favorite features of this book was the way she guides us through the anti-patterns that we typically see in our code. We then step through a series of refactorings before arriving at a simple, maintainable, nicely packaged object-oriented design.
After we've been well schooled in fundamentals, we are given an excellent exposition of unit testing. The unit testing chapter is worth the cost of admission alone.
This is where we want to go after grasping design patterns. It is earning a well deserved spot next to Growing Object-Oriented Software, Guided by Tests in my top ten list.
What tops your favorites list for object-oriented patterns/practices?