Style d'indentation

Un article de Wikipédia, l'encyclopédie libre.

Le style d'indentation décrit les différentes manières que les programmeurs utilisent pour faire ressortir un bloc de code.

Sommaire

[modifier] Styles d'indentation en C

[modifier] Style BSD/Allman

void a_function(void)
{
    if (x == y)
    {
        something1();
        something2();
    }
    else
    {
        somethingelse1();
        somethingelse2();
    }
    finalthing();
}

Le nom de « BSD » accordé à ce style peut être trompeur. En effet, le code des noyaux BSD (et même une large partie du code des systèmes BSD, hors du noyau) est écrit suivant le KNF[1] qui est lui-même une variante du style K&R, décrit ci-dessous.

[modifier] Style K&R

C'est le style employé par Brian Kernighan et Dennis Ritchie pour rédiger les exemples dans leur livre Le Langage C ANSI, connu comme le premier livre sur le langage C.

void a_function(void)
{
    if (x == y) {
        something1();
        something2();
    } else {
        somethingelse1();
        somethingelse2();
    }
    finalthing();
}

Il existe de nombreuses variantes de ce style. Une variante relativement commune consiste à placer l'accolade ouvrante des fonctions sur la même ligne que la partie déclarative ; en dehors du C, c'est un des usages recommandés par Sun pour son langage Java, par exemple[2].

Une autre nuance couramment rencontrée peut venir du placement du mot-clé else. Certains codeurs préfèrent en effet positionner celui-ci sur une ligne à part entière.

[modifier] Style Whitesmiths

if (x == y)
    {
    something1();
    something2();
    }
else
    {
    somethingelse1();
    somethingelse2();
    }
finalthing();

Les usages diffèrent sur la manière de placer les accolades pour les fonctions ; certains auteurs indentent le corps et les accolades par rapport à la partie déclarative, d'autres indentent le corps sans indenter les accolades, d'autres encore n'indentent ni le corps ni les accolades.

[modifier] Style GNU

void
a_function (void)
{
  if (x == y)
    {
      something1 ();
      something2 ();
    }
  else
    {
      somethingelse1 ();
      somethingelse2 ();
    }
  finalthing ();
}

La recommandation officielle du GNU incite les programmeurs à placer le type de retour de la fonction sur une ligne à part, de sorte à aligner le nom de la fonction sur la première colonne. De même, les parenthèses servant aux appels de fonctions doivent être précédées d'une espace[3].

Ces considérations ne sont toutefois pas limitées au style GNU et il n'est pas rare de rencontrer l'une ou l'autre de ces notations avec d'autres styles d'indentation. Par exemple, le KNF régissant la présentaion du code des noyaux BSD requiert que le type de retour d'une fonction soit placé seul sur une ligne précédant le nom de celle-ci.

[modifier] Style Pico

if (x == y)
{ something1 ();
  something2 (); }
else
{ somethingelse1 ();
  somethingelse2 (); }
finalthing ();

Ce style provient du langage Pico et n'est guère populaire en C.

[modifier] Styles d'indentation en C++

[modifier] Style utilisé par Bjarne Stroustrup

C'est le style employé par Bjarne Stroustrup, inventeur du langage C++, pour rédiger les exemples dans son livre décrivant le langage C++.

Celui-ci s'apparente à une variation du style K&R, étendu aux nouveautés apportées par le C++.

[modifier] Autres styles

Les autres styles précédemment décrits pour le C s'étendent aisément au C++ et généralement aux langages à la syntaxe similaire au C.

[modifier] Liens externes

[modifier] Références

  1. (en) Kernel source file style guide (KNF) – OpenBSD Kernel Developer's Manual
  2. (en) Code Conventions for the Java Programming Language
  3. (en) Formatting Your Source Code - The GNU Coding Standards