First programming lesson: Control structures. Senior developer lesson: avoid them.
Too many decisions together
Violation of Open/Closed Principle.
A new condition should not change the main algorithm.
Create hierarchies/compose objects following Open closed principle.
Use State pattern to model transitions.
Since there are valid cases for If/else usages, we should not pull the plug and forbid these instructions. We can put a ratio of if statements/other statements as a warning instead.
If debugging is the process of removing software bugs, then programming must be the process of putting them in.
This article is part of the CodeSmell Series.