A friend asked me to name my top three object-oriented programming books.
I found this a little bit difficult to answer. It wasn’t a matter of narrowing down a large field. Rather, at first I wasn’t sure if I could come up with all of three books worth recommending.
This is mostly my fault. I have shelves full of books on OOP, but I’ve only gotten around to reading a subset of them. There are probably a few gems in that collection and I just don’t know it yet.
But another factor is that there just aren’t a lot of good OOP books out there. Many of them have good ideas, but are written in a style that’s drier than Death Valley. Others come from the formalist school of object-oriented design, which co-opted the terminology of object orientation while denying the spirit.
Here’s the list I ended up sending him:
- Object Thinking, by David West
- Growing Object Oriented Software, Guided by Tests, by Freeman and Price
- Practical Object Oriented Design in Ruby, by Sandi Metz
(Those are Amazon affiliate links; using them will send me beer money.)
These are all fantastic books that I can recommend unreservedly. Unfortunately, I don’t think any of them really qualifies as a on true 101-level primer on OOP thinking. If you can recommend an intro-level textbook on OOP which is neither a) a snoozer; or b) hung up on tangential stuff like types and inheritance, please pipe up in the comments.
EDIT: there is another book that I considered adding to this list: Object Design, by Rebecca Wirfs-Brock. I actually quote this book more often than any of the others on my list. I only left it off because (please forgive me Rebecca, you know I’m a huge fan!) it’s a tad on the dry side. I know a few people who had difficulty getting through it. If you’re like me, and you can get through a book that has a lot of lists of terms that are then broken down into further lists of terms, by all means read this book! You will be the better OO designer for it.