On Jul 22, 2011, at 6:46 AM, Marijn Haverbeke wrote:
> Having some braces four spaces apart and others only two makes for a
> very jarring visual effect. We could probably get used to it, but if
> somebody has a better idea, I think we should consider it.
I'm probably to blame for this style meme (although I got it from Kipp Hickman,
my old SGI / Netscape colleague), I do it i in C code for labels (goto and
switch-case). But C does not require braces around case statements, of course,
so you don't get the half-indented closing braces, as in:
switch (foo) {
case BAR1: {
...
}
case BAR2: {
... // don't forget to break!
}
default: {
...
}
}
which I agree are a bit disconcerting and unaesthetic.
The motivation is that labels are not statements. They should not indent four
spaces, and then their labeled statements indent four more. That tends to
over-indent too much, and the labels have no control flow nesting property that
needs any more indentation than their labeled statements.
K&R and old Unix ken&dmr style simply does not indent labels, so one can always
fall back on that.
A lot of Mozilla code, C++ and JS, uses two-space c-basic-offset and does
indent case labels a full two spaces, then two more for the labeled statements
(I don't think goto labels get the same treatment, but this is C++ code so
gotos are less common; JS break/continue-to-label is also rare).
Two-space c-basic-offset works a bit better with multiline if conditions:
if (very_long_conjunct_goes_here() &&
another_whopper_here()) {
consequent_at_distinct_indentation_level();
...
}
With four-space indentation units, the condition's overflow line and the
consequent block kids start at the same indentation, and are that much harder
to distinguish at a glance. This has led to a SpiderMonkey style variation
where the { in such a situation moves to its own line, in the same column as
the }.
Style, yay.
/be_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev