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.