The self-inflicted pain of premature abstractions
Premature abstraction occurs when developers try making their code very general without a clear need. Examples of premature abstraction include: Creating a base class (or interface) even though there is only one known specialization/implementation Implementing a more general solution and...