99 Bottles of OOP is a practical guide to writing cost-effective, maintainable, and pleasing object-oriented code.
It explores:
Recognizing when code is "good enough"
Getting the best value from Test-Driven Development (TDD)
Doing proper refactoring, not random "rehacktoring"
Locating concepts buried in code
Finding names that convey deeper meaning
Safely altering code by following the "Flocking Rules"
Simplifying new additions with the Open/Closed Principle
Avoiding conditionals by obeying the Liskov Substitution Principle
Making targeted improvements by reducing Code Smells