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 ...

Get Convert If Sentences to Hierarchies now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.