indent style


indent style

(programming)The rules one uses to indent code in a readablefashion. There are four major C indent styles, describedbelow; all have the aim of making it easier for the reader tovisually track the scope of control constructs. Thesignificant variable is the placement of "{" and "}" withrespect to the statement(s) they enclose and to the guard orcontrolling statement ("if", "else", "for", "while", or "do")on the block, if any.

"K&R style" - Named after Kernighan & Ritchie, because theexamples in K&R are formatted this way. Also called "kernelstyle" 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) perlevel; four spaces are occasionally seen, but are much lesscommon.

if (cond)

"Allman style" - named after Eric Allman, a Berkeley hackerwho wrote a lot of the BSD utilities in it (it is sometimescalled "BSD style"). Resembles normal indent style inPascal and ALGOL. Basic indent per level shown here iseight spaces, but four spaces are just as common (especiallyin C++ code).

if (cond)

"Whitesmiths style" - popularised by the examples that camewith Whitesmiths C, an early commercial C compiler. Basicindent per level shown here is eight spaces, but four spacesare occasionally seen.

if (cond)

"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)

Surveys have shown the Allman and Whitesmiths styles to be themost common, with about equal shares. K&R/1TBS used to benearly universal, but is now much less common. The openingbrace tends to get lost against the right parenthesis of theguard part in an "if" or "while", which is a Bad Thing.Defenders of 1TBS argue that any putative gain in readabilityis less important than their style's relative economy withvertical space, which enables one to see more code on one'sscreen at once. Doubtless these issues will continue to bethe subject of holy wars.