Useless interfaces, factories, and other abstractions are everywhere. They are the result of trying to prematurely generalize code. In a recent article I wrote about how I removed one from Leaf. It was getting in the way of other changes, as antipatterns often do.
The false abstraction is any interface, base class, or adaptor that should not exist. While the author may have been well meaning, they probably violated the YAGNI principle, and now we’re left with harder to maintain code. Let’s look at how to identify this antipattern.
An abstract type that has only a single implementation may be a false abstraction. These often following a naming convention of
FluffImpl. The suffix
Impl, or the full
Implementation is generally an indicator of a false abstraction.
The problem is that we have two types to maintain instead of one. Adding a function to the
View original post 390 more words