Object Oriented Programming¶
- The quitessential book for OO, functional programming, logic-based programming, concurrency, etc. is "Concepts, Techniques, and Models of
Computer Programming". It covers all the paradigms in great detail. However, at 950 pages, it's not for the faint of heart. It's really
more for people who want to master all the programming paradigms. It's based on a language called Oz, which is a mix of Erlang, Haskell, Prolog, Lisp, and Java! I figure it'll take me like two years to get through it ;)
- SmallTalk Best Practice Patterns by Kent Beck If you were to only pick one though, the best book you will ever read on how to write object-oriented code. I presented some highlights of the book in my 30 min presentation at MountainWest RubyConf 2009 in case you want to get a feel for it (http://mwrc2009.confreaks.com/14-mar-2009-15-35-what-the-ruby-craftsman-can-learn-from-the-smalltalk-master-philippe-hanrigou.html). The presentation does little justice to the book which distills an intense concentrate of OO wisdom by describing the fundamental forces guiding our every-minute coding decisions (implementation patterns). To read the examples you might have to get a basic understanding of the Smalltalk language, however.
- If you were to skip all the sample code and just read the text you would still be a 10,000% better programmer after reading the book, especially when it comes to OO programming with a dynamic language (like Ruby).
- Smalltalk is extremely close to Ruby and most samples make sense in their context even without previous knowledge of the Smalltalk syntax
- I found "Smalltalk Getting the Message"(http://www.smalltalk-resources.com/Smalltalk-Getting-the-Message.html) a great resource to get quickly up to speed with Smalltalk's concepts and syntax. There are also a lot of gems and OO principles in this paper. One passage I especially enjoy is the one where Alan L. Lovejoy describes duck-typing as "optimistic-typing", for instance.
- Clean Code
While not an OO book per say, a must read for any and all aspiring software developers.
- Agile Software Development
A better OO book by Uncle Bob, which covers design patterns, OO principles, and best practices. If you were going to read one book on OO design, this is the book.