ultradefrag/src/CODING_STYLE.TXT

84 lines
2.7 KiB
Plaintext
Executable File

UltraDefrag Coding Style
========================
1. Whitespace
Of course, the most important aspect in any coding style is whitespace.
UltraDefrag indents are four spaces. Tabs are never used, except of files
copied entirely from external sources (like Lua, getopt and others).
Spaces of course are superior to tabs because:
- You have just one way to specify whitespace, not two. Ambiguity breeds
mistakes.
- The confusion surrounding 'use tabs to indent, spaces to justify' is gone.
- Tab indents push your code to the right, making your screen seriously
unbalanced.
- Tabs will be rendered incorrectly on editors who are misconfigured not
to use tab stops of eight positions.
- Tabs are rendered badly in patches, causing off-by-one errors in almost
every line.
- It is the UltraDefrag coding style.
Do not leave whitespace dangling off the ends of lines.
2. Line width
Lines are 80 characters; not longer whenever possible.
Rationale:
- Some people like to tile their 24" screens with a 6x4 matrix of 80x24
xterms and use vi in all of them. The best way to punish them is to
let them keep doing it.
- Code and especially patches is much more readable if limited to a sane
line length. Eighty is traditional.
- It is the UltraDefrag coding style.
3. Naming
Variables are lower_case_with_underscores; easy to type and read.
4. Block structure
Every multiline indented statement is braced. The opening brace is on the
line that contains the control flow statement that introduces the new block;
the closing brace is on the same line as the else keyword, or on a line
by itself if there is no else keyword. Example:
if(a == 5){
printf("a was 5.\n");
do_something();
} else if(a == 6){
printf("a was 6.\n");
} else {
printf("a was something else entirely.\n");
}
Note that 'else if' is considered a single statement; otherwise a long if/
else if/else if/.../else sequence would need an indent for every else
statement.
Note that if the first statement is braced, all its counterparts should
be enclosed by braces too regardless of whether they are single-line or not
(as in else statement in example above).
An exception is the opening brace for a function; for reasons of tradition
and clarity it comes on a line by itself:
void a_function(void)
{
do_something();
}
Rationale: a consistent (except for functions...) bracing style reduces
ambiguity and avoids needless churn when lines are added or removed.
Furthermore, it is the UltraDefrag coding style.
5. The main rule (post scriptum)
Keep style of sources consistent, it helps make the code more readable!
===================================
Adopted from the QEMU Coding Style
Dmitri Arkhangelski, 12 Nov 2011