front matter
Why write another book on object-oriented design when so many are out there? This was the question I had to answer for myself before embarking on this project.
We already possess a wealth of knowledge about object-oriented design from the early works of Dave Parnas, Grady Booch’s books on UML and object-oriented analysis, and Eric Evans’ domain-driven design approach. However, object-oriented design is not merely a pure engineering task; it transcends into art. No prescribed sequence of steps will unfailingly lead us to an optimal design. Instead, object-oriented design demands a creative approach.
This book delves into object-oriented design from two specific angles: how to prevent the complexity of a system from skyrocketing and how to achieve “good-enough” designs.
First, most of a developer’s work revolves around maintaining and evolving existing systems. Unfortunately, without due care, every time you make changes to a software system, it becomes more complex, even if it is well designed from the outset. Therefore, this book greatly emphasizes how to combat the natural growth in complexity.