Commit e68b98dc7237d76fdef5c5d403d0613b443102da

Authored by aliguori
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.
... ...