Commit e68b98dc7237d76fdef5c5d403d0613b443102da
1 parent
8eca6b1b
Document QEMU coding style (v2) (Avi Kivity)
With the help of some Limoncino I noted several aspects of the QEMU coding style, particularly where it differs from the Linux coding style as many contributors work on both projects. Signed-off-by: Avi Kivity <avi@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6976 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
78 additions
and
0 deletions
CODING_STYLE
0 → 100644
1 | +Qemu Coding Style | ||
2 | +================= | ||
3 | + | ||
4 | +1. Whitespace | ||
5 | + | ||
6 | +Of course, the most important aspect in any coding style is whitespace. | ||
7 | +Crusty old coders who have trouble spotting the glasses on their noses | ||
8 | +can tell the difference between a tab and eight spaces from a distance | ||
9 | +of approximately fifteen parsecs. Many a flamewar have been fought and | ||
10 | +lost on this issue. | ||
11 | + | ||
12 | +QEMU indents are four spaces. Tabs are never used, except in Makefiles | ||
13 | +where they have been irreversibly coded into the syntax by some moron. | ||
14 | +Spaces of course are superior to tabs because: | ||
15 | + | ||
16 | + - You have just one way to specify whitespace, not two. Ambiguity breeds | ||
17 | + mistakes. | ||
18 | + - The confusion surrounding 'use tabs to indent, spaces to justify' is gone. | ||
19 | + - Tab indents push your code to the right, making your screen seriously | ||
20 | + unbalanced. | ||
21 | + - Tabs will be rendered incorrectly on editors who are misconfigured not | ||
22 | + to use tab stops of eight positions. | ||
23 | + - Tabs are rendered badly in patches, causing off-by-one errors in almost | ||
24 | + every line. | ||
25 | + - It is the QEMU coding style. | ||
26 | + | ||
27 | +Do not leave whitespace dangling off the ends of lines. | ||
28 | + | ||
29 | +2. Line width | ||
30 | + | ||
31 | +Lines are 80 characters; not longer. | ||
32 | + | ||
33 | +Rationale: | ||
34 | + - Some people like to tile their 24" screens with a 6x4 matrix of 80x24 | ||
35 | + xterms and use vi in all of them. The best way to punish them is to | ||
36 | + let them keep doing it. | ||
37 | + - Code and especially patches is much more readable if limited to a sane | ||
38 | + line length. Eighty is traditional. | ||
39 | + - It is the QEMU coding style. | ||
40 | + | ||
41 | +3. Naming | ||
42 | + | ||
43 | +Variables are lower_case_with_underscores; easy to type and read. Structured | ||
44 | +type names are in CamelCase; harder to type but standing out. Scalar type | ||
45 | +names are lower_case_with_underscores_ending_with_a_t, like the POSIX | ||
46 | +uint64_t and family. Note that this last convention contradicts POSIX | ||
47 | +and is therefore likely to be changed. | ||
48 | + | ||
49 | +Typedefs are used to eliminate the redundant 'struct' keyword. It is the | ||
50 | +QEMU coding style. | ||
51 | + | ||
52 | +4. Block structure | ||
53 | + | ||
54 | +Every indented statement is braced; even if the block contains just one | ||
55 | +statement. The opening brace is on the line that contains the control | ||
56 | +flow statement that introduces the new block; the closing brace is on the | ||
57 | +same line as the else keyword, or on a line by itself if there is no else | ||
58 | +keyword. Example: | ||
59 | + | ||
60 | + if (a == 5) { | ||
61 | + printf("a was 5.\n"); | ||
62 | + } else if (a == 6) { | ||
63 | + printf("a was 6.\n"); | ||
64 | + } else { | ||
65 | + printf("a was something else entirely.\n"); | ||
66 | + } | ||
67 | + | ||
68 | +An exception is the opening brace for a function; for reasons of tradition | ||
69 | +and clarity it comes on a line by itself: | ||
70 | + | ||
71 | + void a_function(void) | ||
72 | + { | ||
73 | + do_something(); | ||
74 | + } | ||
75 | + | ||
76 | +Rationale: a consistent (except for functions...) bracing style reduces | ||
77 | +ambiguity and avoids needless churn when lines are added or removed. | ||
78 | +Furthermore, it is the QEMU coding style. |