What books would you recommend to improve on object oriented design? I know nothing beats experience, though I would like to know what books have you read that has improved your knowledge on OO design and you highly recommend.
I have been planning to read Code Complete and The pragmatic programmer. What are your thoughts on these books?
in addition to others already reported: Object Oriented Software Construction by Meyer.Mostly because, like other great books, it proposes a problem and then presents a solution which exposes another issue and so on and so forth. Even if in the end one disagrees with all the proposed choices, the reading is great and the reasoning sensible.
Bertrand Meyer's Object-Oriented Software Construction. A classic, written in an engaging style that makes the book very readable and conveys important ideas about programming and software engineering (and object-oriented thinking too!). The first edition was perfect. The second edition exploded in size and I never read the full book; I dipped in and read several sections and they were pure Bertrand Meyer, so I have no doubt the second edition is as good as the first, just longer. The book was published c. 1990, but it's a classic for good reason and would be just as useful now as it was then.
Also, as jes noted in another comment, SICP (Structure and Interpretation of Computer Programs) is a must-have and must-read.
Second this. One of my favourite programming books. The advice is applicable to pretty much every domain of software engineering, and the lessons are philosophical (as the name suggests) rather than technical and specific, so they serve as a great jumping off point for many specific issues you might face in programming. It’s also very short which helps!
Agreed. I cannot recommend that book enough. It's a natural extension of The Good Parts and should be considered required reading (in the same way that Effective Java is for Java developers).
"Essential COM" is one of the top computer books ever written and I'd recommend it to anyone who is interested in object systems even if they don't code for Windows. (e.g. I think better than "The Art of the MetaObject Protocol")
You might also like _Software Abstractions_ (https://mitpress.mit.edu/books/software-abstractions-revised...), by Daniel Jackson. I read the whole thing in two days and then immediately emailed him gushing about how much I loved the book. It's absolutely fantastic.
CS: Design Patterns by GoF. It truly made me understand object oriented design. I'd claim at least 95% of programmers in our industry programming in an object oriented language don't know object oriented design.
Math:
- The Code Book by Simon Singh.
- Chaos by James Gleick.
That book is awesome, should be read by every Java developer! Discussions and examples from this book is often on Stack Overflow too, where the discussions go deeper and may be clearer.
Growing Object Oriented Software, Guided by Tests by Steve Freeman and Natt Pryce. It taught me an awful lot of lessons about object oriented design and London-school TDD. It was published back in 2009 and things have moved on a bit since then but it's still worth reading if you want to understand that style of development. Reading this book changed the way that I write software, very much for the better.
reply