Apply design principles to your classes, preparing them for reuse. You will use package design principles to create packages that are just right in terms of cohesion and coupling, and are user- and maintainer-friendly at the same time. The first part of this book walks you through the five SOLID principles that will help you improve the design of your classes. The second part introduces you to the best practices of package design, and covers both package cohesion principles and package coupling principles. Cohesion principles show you which classes should be put together in a package, when to split packages, and if a combination of classes may be considered a "package" in the first place. Package coupling principles help you choose the right dependencies and prevent wrong directions in the dependency graph of your packages. What You'll Learn Who This Book Is For Software developers with a broad range of experience in the field, who are looking for ways to reuse,share, and distribute their code
If you are not new to the Object-Oriented design, the first 5 sections will not interesting for you. But the rest of the book is full of good advice (and reminders) for creating good packages (Or any other name that you give to that concept). I think reading this book (actually the parts after chapter 5) is good for all people creating softwares.
Although it’s not one of the best-selling books, yet I believe it shortens the learning curve for every software engineer. What’s great about this book is that it creates a need for the knowledge before it introduces it to the reader. It tackles a set of topics that every SDE encounters on everyday work, and it gives a great list of examples and a very good referencing along the way.