O'Reilly logo
  • Mathew Warger thinks this is interesting:

Impl Classes Are Meaningless

Sometimes we see code with classes named by adding “Impl” to the single interface they implement. This is better than leaving the class name unchanged and prefixing an “I” to the interface, but not by much. A name like BookingImpl is duplication; it says exactly the same as implements Booking, which is a “code smell.” We would not be happy with such obvious duplication elsewhere in our code, so we ought to refactor it away.

It might just be a naming problem. There’s always something specific about an implementation that can be included in the class name: it might use a bounded collection, communicate over HTTP, use a d...


Cover of Growing Object-Oriented Software, Guided by Tests


This is something that I would not have known considering the code I have seen in the past. The code will implement the interface in such a way in that it defines it's own use-case.