Building software the right way is probably one of the hardest things you could try. The reason why I say this is simple. The abstraction model that you end up choosing might not be the same as another programmer. Then, it becomes imperative the need for knowledge, best practices, and of course, experience.
Object-Oriented Design Programming is a fascinating mental model. It promises to make your code easier to maintain and evolve than otherwise. I want to share with you why I think this book is a devgadget's choice. And why you shouldn't skip it in your learning journey if you are interested in getting better at programming. Let's examine everything I love about it.
My favorite chapters
- Chapter 1 has all the OOD/OOP basics to get you jiggy with it. You will learn design principles like the SOLID acronym, DRY, to the Law of Demeter. Also, design patterns like Gang of Four (Gof), Erich Gamma, of the seminal works on patterns of Jon Vlissides.
- Chapter 2 is also vital. It will teach you how to design classes with a single responsibility. But more important, how to decide what belongs in a single class.
- Chapters 5 through 8 brings tons of cool things to the table. From how objects of different classes can play similar roles (duck typing) to classical inheritance, and how to combine simple, independent objects into larger, more complex ones, something usually called object composition.
- Chapter 9 will take you to the testing universe. You will find out why Sandi says that Behavior Driver Development (DBB) and Test Driven Development (TDD) should be viewed as on a continuum, rather than alternate testing styles. You will also learn about dependency injection using classes, which is a hot common interview topic.
If you want to learn more about Sandi Metz, visit her website here.