Merge branch 'style-c'
This commit is contained in:
commit
99a99cdcb5
254
STYLE
254
STYLE
@ -1,11 +1,51 @@
|
|||||||
|
“Everyone knows that debugging is twice as hard as writing a program in the
|
||||||
|
first place. So if you’re as clever as you can be when you write it, how
|
||||||
|
will you ever debug it?”
|
||||||
|
– Brian Kernighan, The Elements of Programming Style
|
||||||
|
|
||||||
|
|
||||||
The following guidelines are conducive to clear and readable code that is
|
The following guidelines are conducive to clear and readable code that is
|
||||||
consistent with the style of the rest of the Bonsai Computer System.
|
consistent with the style of the rest of the Bonsai Computer System.
|
||||||
|
|
||||||
0. Braces are mandatory for all control flow.
|
|
||||||
|
|
||||||
1. Nested indentation should be kept to a minimum.
|
Use
|
||||||
|
===
|
||||||
|
|
||||||
2. Empty lines should be placed between different kinds of statements:
|
0. A single line for control flow statements short enough to be easily
|
||||||
|
understood at a glance:
|
||||||
|
|
||||||
|
if !(argc < 0) { usage(program_name); }
|
||||||
|
|
||||||
|
This applies to C switch statements and cases and Rust match statements, as
|
||||||
|
well:
|
||||||
|
|
||||||
|
switch (value) { /* aligning stuff to make it easier to read is fine */
|
||||||
|
case possibility: variable = foo; break;
|
||||||
|
default: variable = NULL; break;
|
||||||
|
}
|
||||||
|
|
||||||
|
1. Switch cases in C and match arms in Rust should start another level of
|
||||||
|
indentation:
|
||||||
|
|
||||||
|
switch (value) {
|
||||||
|
case possibility:
|
||||||
|
statement;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
statement;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
match result {
|
||||||
|
Ok(n) => variable = n,
|
||||||
|
Err(e) => error = e,
|
||||||
|
}
|
||||||
|
|
||||||
|
2. Braces in control flow where their inclusion is left optional in C:
|
||||||
|
|
||||||
|
if (condition) { statement; }
|
||||||
|
|
||||||
|
3. Empty lines between different kinds of statements:
|
||||||
|
|
||||||
int t;
|
int t;
|
||||||
|
|
||||||