A colleague brought up Elegant Objects (Vol 1) by Yegor Bugayenko; suggesting someone read it and see if it's worth while for those looking trying to follow best Object Oriented Programming/Design practices.
I can read through books pretty quickly; I want to do the best OOP; Figured it'd be a worthwhile endeavor. I haven't found a good book on how to write actual Object Oriented Design.
I've gone through an Object Oriented Bootcamp given by Fred George which completely changed how I think about developing software.
The bootcamp crystallized a lot of what I'd gotten from the slew of OOP and Design books I've read. I hadn't found any books that provided the finer details of "how" of writing objected oriented software. Design patters; refactor - All great things.
A few additional concepts were introduced in the boot camp that totally defy common practices, not best practices. One that this book also covers is not using Getters/Setters.
After the bootcamp I spent a lot of time working on the things I'd learned as it very much revolutionized how I write code. Completely changed the mental model I have for what code should look like.
This book is another major revelation in how to write good object oriented software. He lays it out very clearly, and frequently that all these practices are for the same goal; maintainability. My years of hammering on Unit Testing and Code Quality are all driving towards maintainability. Every step I take along the object oriented design path is so I can produce more maintainable code; higher quality code.
While reading the book I had to stop partway through and try some of the ideas out. I use the simple Code Kata of FizzBuzz to do this. The result; while one could call it more complex; patterns started emerging. The design patterns we're all told to know and implement just kinda fell into place. There was no effort on my part to put it in; or organize code to use it - just... It's what made sense. I was rather surprised from this, but it makes sense thinking about it.
I'll need to go back and re-read a few of the OOP/D books to see how much in them I just didn't get before... Because this book clears up A LOT of things.
The Bootcamp was to provide a language to be able to understand OOP; and now that I have that language - Maybe the books I've read before will have new insights that I missed before.
I haven't had a good book to point people to help them understand the HOW of OOP. We can talk about the effects, we can talk about the lessons learned, but how do we, as programmers, actually write this OOP?
I've read a lot of books, none made sense. Maybe I lacked the language, maybe they were too effect and lesson focused... I hope to learn that later on; but for now...
This book is how I'll be writing code.
This is so different. In a good way though. I expect I'll suck at it for a bit, but I'll get better. The code will be better. I recognize these practices as the ones I've been trying to get into place; this book is helping further crystalize how I can.
- This book is how you can write OOP.
- This book is how to write highly maintainable code.
- This book is how you understand what the big names are writing about.
In case you've not picked up on it - Buy. This. Book.
I really like this book
Yegor has a section on how to get a discount on the book purchase - http://www.yegor256.com/books.html#how-to-get-a-discount. I'm writing this review; I've got one amazon; and I'm not getting the discount. This book is worth every penny I've paid.
I'm going to buy more; full price; and have them readily available for others to read.
I'm more than happy to pay for material I find worth it; and I find it worth it enough to buy more copies for others to read; so I always have mine on hand.