Dr. Cedric In the House. Cedric has a new style on his blog (very nice) and an interesting new post on using Interfaces. In it he makes two interesting assertions: never supply an interface without a factory and "new" should only appear in factories. He's going to expand on the second one later, but the idea is that the first rule avoids this type of code:
IEmployee emp = new EmployeeImpl();
Woof, that's ugly, ain't it? Check out Cedric's site for the details.
...
Now someone help me out, I'm starting to see posts about Test Driven Development (TDD) where they're talking about creating lots of interfaces. Is this true? Tell me it isn't so! I need some education on this topic...
-Russ [Russell Beattie Notebook]
Pure greenfield Test-Driven development means only doing things as the tests need them, so interfaces should only appear where they're supposed to. However, pure greenfield development is something of a rare beast. A fair proportion of my time is spent doing Test-Driven Refactoring, where I'm trying to retrofit the attitude and practice of Test-First to lumps of intransigent legacy code. Interfaces are the programmer's equivalent of a crowbar in these situations. You have to lever apart the coupling in order to fit a TestCase into the gap.