Just tuned into this post by Rory Primrose on about the interface vs. inheritence issue with class library design. This is something that causes me a little bit of inner turmoil every now and then when I am trying to design something for other people to use, although to stop analysis paralysis just role the dice and see how it goes.

The thing about using the interface approach is that you get the flexibility of having your own domain specific base classes, and you can always encapsulate a helper class and just hand off to those helpers after you implement the interface.

I also find that programming with interfaces also helps to reduce coupling between code. I think its just a mental hurdle that you have to get over when you decide to “just add one more property” to handle a special case scenario.

Maybe there is no right answer, but one thing is for sure – having the experience to ask yourself the question “is this the right way to do it” may be more important than the answer.