The Jargon File (version 4.4.7, 29 Dec 2003):
[C, C++, and Java programmers] The rules one uses to indent code in a
readable fashion. There are four major C indent styles, described below;
all have the aim of making it easier for the reader to visually track the
scope of control constructs. They have been inherited by C++ and Java,
which have C-like syntaxes. The significant variable is the placement of
and with respect to the statement(s) they enclose and to the guard or
controlling statement (if, else, for, while, or do) on the block, if any.
K&R style ? Named after Kernighan & Ritchie, because the examples in K&R
are formatted this way. Also called kernel style because the Unix kernel is
written in it, and the ?One True Brace Style? (abbrev. 1TBS) by its
partisans. In C code, the body is typically indented by eight spaces (or
one tab) per level, as shown here. Four spaces are occasionally seen in C,
but in C++ and Java four tends to be the rule rather than the exception.
Allman style ? Named for Eric Allman, a Berkeley hacker who wrote a lot of
the BSD utilities in it (it is sometimes called BSD style). Resembles
normal indent style in Pascal and Algol. It is the only style other than K&
R in widespread use among Java programmers. Basic indent per level shown
here is eight spaces, but four (or sometimes three) spaces are generally
preferred by C++ and Java programmers.
Whitesmiths style ? popularized by the examples that came with Whitesmiths
C, an early commercial C compiler. Basic indent per level shown here is
eight spaces, but four spaces are occasionally seen.
GNU style ? Used throughout GNU EMACS and the Free Software Foundation
code, and just about nowhere else. Indents are always four spaces per
level, with and halfway between the outer and inner indent levels.
Surveys have shown the Allman and Whitesmiths styles to be the most common,
with about equal mind shares. K&R/1TBS used to be nearly universal, but is
now much less common in C (the opening brace tends to get lost against the
right paren of the guard part in an if or while, which is a Bad Thing).
Defenders of 1TBS argue that any putative gain in readability is less
important than their style's relative economy with vertical space, which
enables one to see more code on one's screen at once. The Java Language
Specification legislates not only the capitalization of identifiers, but
where nouns, adjectives, and verbs should be in method, class, interface,
and variable names (section 6.8). While the specification stops short of
also standardizing on a bracing style, all source code originating from Sun
Laboratories uses the K&R style. This has set a precedent for Java
programmers, which most follow.
Doubtless these issues will continue to be the subject of holy wars.
The Free On-line Dictionary of Computing (18 March 2015):
Rules for formatting code to make it easier to
visually match up the beginning and end of a block of
statements, particularly one controlled by a control
statement such as "if", "else", "for", "while", "do". This
becomes important with large, nested blocks of code.
Indent styles vary in the placement of "" and "" with respect to
the statement(s) they enclose and the controlling statement.
The normal style is "Allman style", named after Eric Allman, a
Berkeley hacker who wrote many BSD utilities in it. It is
sometimes called "BSD style". It resembles normal indent style in
Pascal and ALGOL. Basic indent per level is eight or four
spaces. This is the only indent style to clearly associate the
controlling statement and the beginning and the end of the block
by aligning them vertically, which probably explains its
Other styles such as K&R style, Whitesmiths style and GNU
style are either obsolete or should be avoided because they make
it harder (much harder in some cases) to match braces with each
other and with the control statement that controls them.
Many related languages such as Perl offer the same choices while
others, following B, eschew braces and rely entirely on relative
indentation to express block structure. In Python, braces can
be used to override indentation.