TDD with the Interface Segregation Principle
Interfaces are very helpful, but sometimes it can be very easy to pollute them with capabilities that are not really supposed to be a part of the interface. I used to encounter this violation a lot. I was asking myself how I kept on creating empty methods with to-do comments, only to find classes a few months or years later, still with those to-do comments and the methods still empty.
I used to touch my interfaces first and stuff them with all the methods I thought I needed. Then, when I finally wrote the concrete implementations, these concrete classes mostly had empty methods in them.
An interface should only have methods that are specific to that interface. If there’s a method in there that is not entirely related to that interface, you need to segregate it into a different interface.
Let’s see that in action. Again, let’s start with a – you guessed it right – test:
- Open the
codebase...