Object-Oriented Design Heuristics offers insight into object-oriented design improvement. The more than sixty guidelines presented in this book are language-independent and allow you to rate the integrity of a software design. The heuristics are not written as hard and fast rules; they are meant to serve as warning mechanisms which allow the flexibility of ignoring the heuristic as necessary. This tutorial-based approach, born out of the author's extensive experience developing software, teaching thousands of students, and critiquing designs in a variety of domains, allows you to apply the guidelines in a personalized manner. The heuristics cover important topics ranging from classes and objects (with emphasis on their relationships including association, uses, containment, and both single and multiple inheritance) to physical object-oriented design. You will gain an understanding of the synergy that exists between design heuristics and the popular concept of design patterns; heuristics can highlight a problem in one facet of a design while patterns can provide the solution. Programmers of all levels will find value in this book. The newcomer will discover a fast track to understanding the concepts of object-oriented programming. At the same time, experienced programmers seeking to strengthen their object-oriented development efforts will appreciate the insightful analysis. In short, with Object-Oriented Design Heuristics as your guide, you have the tools to become a better software developer.
This book is a masterpiece. Buy it and read it - it will make you a better programmer.
There are several Object-oriented concepts every programmer is familiar with. But is adhering to these concepts enough for writing reusable and maintainable code? How to identify that a class does too much or too little? How to distribute system intelligence? Is knowing how to inherit one class from another always reduces code duplication and makes these classes easier to work with? Or maybe composition is always preferable?
This book answers a lot of such questions by providing 60 practical guidelines on how to design classes and interactions between them. It also discusses cases where these guidelines contradict each other and gives practical advice on how to decide which approach to choose and why.
This book will be helpful for an experienced programmer, less so for a novice.
However, there are three things that might discourage an unknowing person from buying the book: it was published in 1996, the code examples are written in C++ and it is only available in paperback (or at least I was able to find only a printed version). One should nevertheless try to get their hands on it - the amount of wisdom it contains is enormous.
... und Indikatoren für schlechtes OO-Design. Bebildert m.E. vieles, was Robert C. Martin positiv als »design principles« zusammenschrieb. Beispielsweise verweist Riels Negativindikator »Gottklasse« auf Martins »single responsibility principle« und so weiter. Alle Quelltextbeispiele sind in C++ verfasst.