Convert If Sentences to Hierarchies
Conditional statements (if-else) are everywhere. If you have more than two excluding boolean conditions your if sentences become a switch or case. You can turn many if conditions into message dispatches using polymorphism. The benefits are related to the open/closed principle and help maintain complex business rules in large codebases by creating new abstractions and changing a single place in the code instead of searching for every if/switch related to the business rules you are learning.
How to Mechanically Replace an If Condition
Imagine your application needs to record audio from your microphone. The microphone can be turned on or off.
Here is the Java code:
public String handleMicrophoneState(String state) {
if (state.equals("off")) {
return "Microphone is off";
} else {
return "Microphone is on";
}
}
This innocent piece of code has a lot of problems. The constant representing the off state (off) is repeated in all the code, increasing the chance of typos and spelling mistakes. The else condition is not explicitly talking about being “on.” It is bound to be “not off”.
You will need to repeat this if condition at all places where you need to handle the state, exposing internal representation and violating encapsulation. The last problem is related to the SOLID open–closed principle. This algorithm is not open for extension and is closed by modification. A new state will ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access