At last month's Code Cabin, I was chatting with Steve Temple about Ditto and best coding practices, he suggested that I read Elegant Objects by Yegor Bugayenko, as it made him think totally differently about object-oriented programming.
A day or so later the book arrived and I couldn't put it down. The blurb on the cover says it all...
TL;DR There are 23 practical recommendations for object-oriented programmers. Most of them are completely against everything you've read in other books. For example, static methods, NULL references, getters, setters, and mutable classes are called evil.
I started coding with BASIC (on a Spectrum 48K) as a kid, then "professionally" as a web-developer since 2000 doing Classic ASP/VBScript. The vast majority of my coding comes from a procedural background, I knew I had bad habits when doing OOP, but oh boy, whilst reading the book I had no idea how much I was "doing it wrong".
The book has many principles that I agreed with in theory, but I wasn't sure how I would practically apply them. The majority of the development I do is with C#/.NET and Umbraco CMS implementations, where most of the anti-patterns (as outlined in the book - such as returning
null object values) are a common occurrence.
Given the insight into how to develop clean, maintainable object-oriented code, I feel that I can at least improve on my own application and library code.
If you are an open-minded developer, who is looking for new and thought provoking ideas, I would definitely recommend this book.
Volume 2 of Elegant Objects is due out at the end of the year, see Yegor's website for updates.