My highlight was Yegor Bugayenko's "Elegant Objects". Volume 2 was released this year (however I found the first Volume (2016) much better).
Yegor describes what went wrong with object-oriented programming. Whether you are stuck with Java or broaden your horizon, I can really recommend this book series, as it shows nicely how to deal with object-oriented code in the right way.
What was eyeopening for me was that code, written after some of the rules he proposes, becomes indistinguishable from functional programs. One example of a tree of objects resembles a LISP program. This all made me realize how flawed some of the arguments are that to me seem to divide the functional/types and OO camps.
Yegor describes what went wrong with object-oriented programming. Whether you are stuck with Java or broaden your horizon, I can really recommend this book series, as it shows nicely how to deal with object-oriented code in the right way.
What was eyeopening for me was that code, written after some of the rules he proposes, becomes indistinguishable from functional programs. One example of a tree of objects resembles a LISP program. This all made me realize how flawed some of the arguments are that to me seem to divide the functional/types and OO camps.
https://www.amazon.com/Elegant-Objects-1-Yegor-Bugayenko/dp/...
https://www.amazon.com/Elegant-Objects-2-Yegor-Bugayenko/dp/...
The books are short and relatively expensive, but Yegor claims to refund 20 euros for everyone who is willing to write a blogpost.