Agreed. Inheritance, specifically, is a huge code smell.
When inheritance is acting as a quick way to implement an interface, it’s lovely.
When an object is acting as a fancy dictionary, it’s lovely.
When a class has more than one parent in it’s chain of inheritance (upwards or sideways), that’s a code smell.
It specifically tells us that the developers are trying to manage program state (variables and data) that simply should have been refactored out (or have drifted very far from the code they’re actually needed by).
Agreed. Inheritance, specifically, is a huge code smell.
When inheritance is acting as a quick way to implement an interface, it’s lovely.
When an object is acting as a fancy dictionary, it’s lovely.
When a class has more than one parent in it’s chain of inheritance (upwards or sideways), that’s a code smell.
It specifically tells us that the developers are trying to manage program state (variables and data) that simply should have been refactored out (or have drifted very far from the code they’re actually needed by).