indent style
<programming> 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. 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" (abbreviation 1TBS) by its
partisans. The basic indent shown here is eight spaces (or one tab) per level;
four spaces are occasionally seen, but are much less common.
if (cond) {
<body>
}
"Allman style" - named after 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. Basic indent per level shown
here is eight spaces, but four spaces are just as
common (especially in C++ code).
if (cond)
{
<body>
}
"Whitesmiths style" - popularised 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.
if (cond)
{
<body>
}
"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.
if (cond)
{
<body>
}
Surveys have shown the Allman and Whitesmiths styles to be the most
common, with about equal shares. K&R/1TBS used to be
nearly universal, but is now much less common. The
opening brace tends to get lost against the right
parenthesis 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. Doubtless these issues will continue
to be the subject of holy wars.
[Jargon File]
(1995-07-24)
Nearby terms:
incremental constraint solver « Incremental
Prototyping Technology for Embedded Realtime Systems
« [incr Tcl] «
indent style » Independent Logical File »
Independent Verification and Validation » index
|