In Principles of Package Design Matthias Noback tells you everything about designing software components, also known as packages. In the first part you'll revisit the SOLID principles of class design. They will help you prepare your classes for use in packages. The second part covers the important, yet lesser known package design principles. When you've finished this book, you'll be ready to design packages that have high cohesion, low coupling and are at the same time user- and maintainer-friendly.
La prima parte, relativa ai principi SOLID, anche se non direttamente correlata con la creazione di pacchetti, riesce a spiegare bene e in modo più chiaro rispetto ad altri manuali specifici.
La seconda parte, relativa ai principi da usare per creare pacchetti veri e propri, non inizia nel migliore dei modi. I capitoli sul principio di coesione sono abbastanza ostici e non molto chiari. La parte finale è molto più chiara.
Ad essere onesto ho avuto l'impressione che sia impossibile seguire tutti i principi, e che se lo si facesse, ogni pacchetto conterrebbe solo una o due interfacce e solo una o due classi (di cui una probabilmente "privata"), ma almeno mi ha lasciato diverse cose su cui ragionare più a fondo.
Matthias Noback is a well known figure in the Symfony world, where he's been pioneering the concept of hexagonal architecture and developing some very cool libraries. So I have of course been looking forward to reading his book – Principles of Package Design.
I was not disappointed, whatsoever.
This is one of the most useful programming books I have ever read. Principles of Package Design should be required reading for anyone writing code for a living, independent of one's programming language.