Skip to Content
Convert If Sentences to Hierarchies
shortcut

Convert If Sentences to Hierarchies

by Maximiliano Contieri
August 2024
Intermediate
5 pages
5m
English
O'Reilly Media, Inc.
Content preview from Convert If Sentences to Hierarchies

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

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Use Null Objects instead of NULL

Use Null Objects instead of NULL

Maximiliano Contieri
Create Immutable Objects

Create Immutable Objects

Maximiliano Contieri
Name Your Functions

Name Your Functions

Maximiliano Contieri

Publisher Resources

ISBN: 9781098172602