Service s = new ServiceImpl() - Why Are You Doing That?
I see the following "best practice" over and over again in projects and reviews :
Service service = new ServiceImpl();
Basically: for every interface there is an implementation with the "Impl" ending. That's not enough: sometimes both are configured in a XML-File (probably to emphasize the importance of this pattern :-)). That is not only bloat (and the opposite of "Convention Over Configuration" idea), but it causes real damage:
- Imagine you get another implementation (thats the whole point of an interface) - how would you name it?
- It doubles the amount of artifacts - and significantly increases the "complexity"
- It is really funny to read the javadocs on the interface and the impl - another redundancy
- The navigation in the IDE is less fluent
I asked why developers are writing such code, but I didn't get a reasonable answer, except "because of mocking".
For several years however, this is no longer true. Any ideas, why are you doing that?