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. | ... | ... |