First programming lesson: Control structures. Senior developer lesson: avoid them.
Problems:
Too many decisions together
Coupling
Duplicated code
Violation of Open/Closed Principle.
A new condition should not change the main algorithm.
Nulls
Solutions
Polymorphism
Create hierarchies/compose objects following Open closed principle.
Use State pattern to model transitions.
Use Strategy Pattern/Method Object to choose for branches.
Examples
Discrete Values
State transition
Algorithm choice.
Sample Code
Wrong
Right
Detection
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.
Relations
More info
How to Get Rid of Annoying IFs Forever
Maxi Contieri ・ Nov 9 '20
Credits
Photo by Adarsh Kummur on Unsplash
If debugging is the process of removing software bugs, then programming must be the process of putting them in.
Edsger Dijkstra