Parallel Inheritance Hierarchies
Parallel Inheritance Hierarchy smells occur when subclasses of class A must be linked to subclasses of class B.
# Parent classes class Dinosaur: # Dinosaur code class Egg: # Egg code # Child classes with Parallel Inheritance Hierarchy smell class Velociraptor(Dinosaur): # Velociraptor code class VelociraptorEgg(Egg) # VelociraptorEgg code
There are three main issues caused by Parallel Inheritance Hierarchy smells: If you want to add a new class, you will need to create two every time, changes in one class may require changes in the other, and it is generally harder to maintain the code and avoid bugs.
There are different ways to remove this code smell, and which one you choose will depend on your exact case. One way is to only have one hierarchy with implements details for both the dinosaur, and its egg. Another way is to reduce one of the hierarchies into a single class, such as an Egg class that contains objects that are subclasses of Dinosaur.
Books about code smells
Learn to write better smelling code.
Refactoring: Improving the Design of Existing Code
Code smells: A Predictor of Remarkable Quality Improvement
Clean Code: A Handbook of Agile Software Craftsmanship