Nope, since I haven't added any non-whitespace characters, rather it is like insisting that people do:
if (a < b) {
return -1;
} else
if (a > b) {
return 1;
} else {
return 0;
}
Unlike your perfectly formatted code there, this has a bit of a visual problem: a one-liner consequent is fully braced, whereas a multi-line alternative isn't.
Ternary operators are different. They have confusing nesting and do not support the equivalent of the "if/else ladder" pattern very well.
The nesting is irrelevant to understanding the semantics, so this objection doesn't fly. The idiom is basically just a truth table with conditions on the left and the matching value on the right. You read it left-to-right, top-to-bottom, just like all other code. The first condition on the left that matches returns the value on right-hand side.
> The nesting is irrelevant to understanding the semantics
The nesting is absolutely relevant to producing the semantics.
The following uses deceptive whitespace to suggest a nesting that is contrary to the actual nesting, interfering with understanding:
if (foo)
if (bar)
xyzzy();
else
flop();
The ternary operator A ? B : C is the goofy invention of demented mind. In nested situations, it is mind-bendingly unreadable. It behooves us to style it in a way that reveals the abstract syntax tree structure.
We can regard the condition as the head of a clause, and the ? and : as heads of sub-clauses:
which leads to: