# Code Smell 137 - Inheritance Tree Too Deep

> TL;DR: Favor composition over inheritance

# Problems

*   [Coupling](https://maximilianocontieri.com/coupling-the-one-and-only-software-design-problem)
    
*   Subclassification Reuse
    
*   Bad cohesion
    
*   Fragile base classes
    
*   Method overriding
    
*   Liskov Substitution
    

# Solutions

1.  Break classes and compose them.
    

# Context

Old papers recommended using classes as a specialization for code reuse.

We learnt that composition is a more efficient and extensible way to share behavior.

# Sample Code

## Wrong

```python
classdef Animalia
   
end

classdef Chordata < Animalia 

end

classdef Mammalia < Chordata 

end

classdef Perissodactyla < Mammalia 

end

classdef Equidae < Perissodactyla  

end

classdef Equus < Equidae 
//Equus behaviour
end

classdef EFerus < Equus
//EFerus behaviour
end

classdef EFCaballus < EFerus
//EFCaballus behaviour    
end
```

## Right

```python
classdef Horse       
    methods        
      // Horse behavior       
    end    
end
```

# Detection

\[X\] Automatic

Many linters report *Depth of inheritance tree (DIT)*.

# Tags

*   Hierarchies
    

# Conclusion

Look after your hierarchies and break them often.

# Relations

%[https://maximilianocontieri.com/code-smell-11-subclassification-for-code-reuse] 

%[https://maximilianocontieri.com/code-smell-43-concrete-classes-subclassified] 

%[https://maximilianocontieri.com/code-smell-58-yo-yo-problem] 

%[https://maximilianocontieri.com/code-smell-37-protected-attributes] 

%[https://maximilianocontieri.com/code-smell-125-is-a-relationship] 

# More Info

*   [Coupling: The one and only problem](https://maximilianocontieri.com/coupling-the-one-and-only-software-design-problem)
    
*   [Wikipedia](https://en.wikipedia.org/wiki/Cyclomatic_complexity)
    

* * *

> Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification.

*Bertrand Meyer*

%[https://maximilianocontieri.com/software-engineering-great-quotes] 

* * *

This article is part of the CodeSmell Series.

%[https://maximilianocontieri.com/how-to-find-the-stinky-parts-of-your-code]
