Clean Code: A Handbook of Agile Software Craftsmanship, by Robert C. Martin is a book about how to keep your code readable, flexible and naturally bug free.
It reminds me, of course, of Code Complete, which I really liked when I first read it (1997). Clean Code is much weaker on the research side (i.e.: there is a big difference between say “this is bad because I say so” and actually showing references to research that prove that a specific practice causes more bugs).
However, as far as I remember the coverage of OOP in Code Complete was much weaker, and this is where Clean Code shines. There are plenty of interesting and useful ideas on how to clean your classes, when and how to refactor them, and much more. There are also some practical refactorings of real code, which I found somewhat useful – mostly because I read the book on an iPad, and switching around to keep track of what happened is somewhat painful in comparison to flipping a page.
Other than that, I strongly recommend the book for coders everywhere – just keep in mind that all the samples are in Java! I haven't used Java in years but I could still keep up with everything.