Two weeks ago I received my eagerly awaited copy of
Jimmy Nilssons "
Applying Domain-Driven Design and Patterns" (ADDDP). I can say that this book exceeds my expectations.
Although I'm only half-way through I feel the urge to write a short review.
ADDDP is a book that provides a comprehensive guide of how to apply modern programming techniques like
Domain-Driven Design (DDD), Test-Driven Design (TDD), Patterns and Refactoring. It is based mainly on the work by
Eric Evans (
Domain-Driven Design). A wide range of patterns are discussed throughout the book. Besides the classic
Design Patterns by the Gang of Four,
Martin Fowler's
Patterns of Enterprise Application Architecture (PoEAA) plays an important role.
One
can say that Jimmy Nilsson connects those practices with his work in an
excellent way. I like his style of writing. The topics are very
technical, but Jimmy's explanations are not academic at all. And he
also isn't afraid of repeating things. Things that are important during
developing with DDD, TDD and Refactoring.
The book shows effectively
how to build a model around the problem domain. While reading you can
"feel" how the development process is driven by the problem domain.
One
thing about his writing style that attracted my attention is that Jimmy
actively slows the reader down. You can often read something like "we
will take a step back" or "I leave it like this for now". While this
reflects the style of developing in an agile manner, it also produces
an interesting side effect: The reader is always given enough time to
understand the different techniques. This way everything is very easy
to follow.
There is one thing I didn't like very much.
Throughout the book Jimmy Nilsson uses notes to give background
information about a preceding statement. While this is a common writing
style, it is used a too often in my opinion. These notes have been a
little bit distracting or disturbing for me from time to time.
What I especially love are the hand-drawn UML diagrams. Although I can't really tell why. :)
The
subtitle of the book is "With Examples in C# and .NET". I suppose this
is a marketing desicion by the publisher. :) And I hope this doesn't
affect the sales figures of the book negatively. ADDDP is completely
applicable for any other object oriented languages and programming
platforms.
Here's a list of covered topics (from back cover):
- Quick primers on patterns, TDD, and refactoring
- Using architectural techniques to improve software quality
- Using domain models to support business rules and validation
- Applying enterprise patterns to provide persistence support via NHibernate
- Planning effectively for the presentation layer and UI testing
- Designing for Dependency Injection, Aspect Orientation, and other new paradigms