Software Quality

September 6, 2010

I found a great new book on Dependency Injection and Architecture

Filed under: Practices, Testing — David Allen @ 9:20 pm

The book is a work in progress, by Mark Seemann, to be published by Manning Publications.  It is entitled Dependency Injection in .Net.  This book fills in a serious gap my software development education by explaining how automated dependency injection can help improve testability and composability of modules. It shows me both how to do something (with compilable sample code), and it also shows me why things are done (the resulting benefits).  I love this book. It is by a real programmer, about a really important topic. And I’m learning a lot of stuff I can use in my daily programming work

It comes with source code and unit tests, which I have compiled and run. The author is clearly passionate about unit testing and TDD in particular, as can be seen on his blog. I love studying real code. Mark clearly put a lot of effort into developing these realistically complex sample applications. I know – I have developed material like that for teaching code contracts, and it is  a lot of work to pull it all together. 

This is the first time I have purchased a book that was under development. The book is well along towards completion, and already has tons of useful information.  I am such a slow study that I am not in a hurry anyway.  And the forum for readers is a cool way for us to help the author write a better book and help each other understand the material.   The author has produced a clearly written work that explains dependency injection and layered architecture better than anything I have seen so far.   The chapter on cross-cutting concerns does an outstanding job of bringing together several ideas to summarize how SOLID code design principles are connected with Dependency Injection, and how they are both a means to produce code that is easier to create, change, and test. These internal qualities help us deliver the external qualities like reliability and adaptability that our customers deserve.  It complements the material presented in Robert C. (Uncle Bob)  Martin’s excellent book Agile Principles, Patterns,  and Practices in C#. I loved Uncle Bob’s book . but the chapters on module and library dependency drove me crazy. I understood him just enough to appreciate that he was saying something important. But I did not quite get it. Thanks to Mark Seemann’s work on dependency injection, I think I understand library dependencies better.

Leave a Comment »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Blog at WordPress.com.

%d bloggers like this: