Agile Software Development received rave reviews, winning the Software Development Magazine’s Jolt Award. So I looked forward to some expert instruction from an object-oriented and agile veteran.
The sections on agile design principles were excellent. The chapters on the single-responsibility principle, the open-closed principle, the Liskov substitution principle, the dependency-inversion principle, and the interface-segregation principle clearly described the principles, showed the problems that they helped fix, and then showed how to solve the problem with the principle.
The packaging principles were explained almost as well. The principles were also explained, the problems were illustrated, and the package designs that solved the problems were shown. The missing link was how the package design affected the code.
The first two case studies, the Payroll and Weather Station examples, also did a very good job of showing common patterns in use on an actual project. Martin also showed how to back into a pattern from a simple design (as per Test Driven Development), which I found very interesting.
The code examples, however, were not so good. They switched from C++ to Java. While I am familiar with both, the back-and-forth switching produced a jarring effect that inhibited understanding. The second case study was mostly C++ code from the early 90’s. The rest of the code was created from 1998 through 2002. Some of it was written test-first, much was not.
Overall the book was very good, but I was a little disappointed. In the Foreward the author explains that parts of the book came from another book project and the rest was written over a five-year span. It shows.
Check out more book reviews at the WeProgram.NET Book Review page.