cover-img

Code Smell 43 - Concrete Classes Subclassified

Inheritance. Concrete classes. Reuse. A fantastic mix up.

12 January, 2023

8

8

0

Problems

Bad Models

Coupling

Method overriding

Mapper fault

Solutions

1.

Subclasses should be specializations.

2.

Refactor Hierarchies.

3.

Favor Composition.

4.

Leaf classes should be concrete.

5.

Not leaf classes should be abstract.

Sample Code

Wrong

Right

Detection

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.

Tags

Composition

Conclusion

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.

Relations

More Info

Software is a gas; it expands to fill its container.

Nathan Myhrvold
This article is part of the CodeSmell Series.

8

8

0

Maxi Contieri

Buenos Aires, Argentina

🎓Learn something new every day.📆 💻CS software engineer 👷coding👨🏽‍🏫teaching ✍🏾writing 🎨Software Design 🏢SOLID 🌉TDD 👴Legacy 💩Code Smells

More Articles

Showwcase is a professional tech network with over 0 users from over 150 countries. We assist tech professionals in showcasing their unique skills through dedicated profiles and connect them with top global companies for career opportunities.

© Copyright 2024. Showcase Creators Inc. All rights reserved.