Inheritance. Concrete classes. Reuse. A fantastic mix up.
Liskov Substitution Violation
Subclasses should be specializations.
Leaf classes should be concrete.
Not leaf classes should be abstract.
Overriding a concrete method is a clear smell. We can enforce these policies on most linters.
Abstract classes should have just a few concrete methods. We can check against a predefined threshold for offenders.
Accidental sub-classification is the first obvious advantage for junior developers.
More mature ones find composition opportunities instead.
Composition is dynamic, multiple, pluggable, more testable, more maintainable and less coupled than inheritance.
Only sub-classify an entity if it follows the relationships behaves like.
After sub-classing the parent class should be abstract.
Code Smell 11 - Subclassification for Code Reuse
Maxi Contieri ⭐⭐⭐ ・ Oct 30 '20 ・ 2 min read
Software is a gas; it expands to fill its container.
Top comments (0)