Why is an empty else-if statement bad style, and how should I rewrite it?

Who says it’s “bad style”?

The relevant question to ask is, is this clearer than alternatives? In your specific case, I’d say it is. The code clearly expresses a choice between 4 options, of which one is “do nothing”.

The only change I’d make is to replace that rather insignificant semicolon by an empty pair of braces, possibly with a comment to make it clear it’s not a mistake.

if (! seesWater(LEFT)) {
    turn(LEFT);
}
else if (! seesWater(AHEAD)) {
    // nothing required
}
else if (! seesWater(RIGHT)) {
    turn(RIGHT);
}
else {
    turn180();
}

This is not endorsing ’empty clauses’ as a generally-acceptable style; merely that cases should be argued on their merits, not on the basis of some Rule That Must Be Obeyed. It is a matter of developing good taste, and the judgement of taste is for humans, not mindless automata.

Leave a Comment