Utilisateur:Metzgermeister/Style d'indentation

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

  • (en) Cet article est partiellement ou en totalité issu d’une traduction de l’article de Wikipédia en anglais intitulé « Indent style ».

En programmation informatique, un style d'indentation est une convention sur l'indentation des blocs de code qui définissent la structure d'un programme. Bien qu'ayant beaucoup d'exemples en langage C, ces styles peuvent s'appliquer aux langages inspirés du C, et plus largement à la plupart des langages de programmation (et particulièrement ceux basés sur les accolades pour définir leurs blocs de code). L'indentation n'est qu'un aspect du style de programmation (indentation, etc.).

Bien que l'indentation ne soit pas nécessaire dans la plupart des langages de programmation, les programmeurs l'utilisent pour mieux mettre en évidence la structure de leurs programmes aux autres humains. L'indentation est particulièrement utilisée pour montrer les relations entre les structures de contrôle, telles que les conditions, ou les boucles, avec le code à l'intérieur et à l'extérieur de telles structures. Cependant, certains langages de programmation comme le Python emploient l'indentation comme moyen de déterminer la structure d'un programme au lieu d'utiliser des accolades ou des mots-clés.

La taille de l'indentation dépend généralement du style utilisé. Quelques-uns des premiers programmeurs utilisèrent la tabulation pour la simplicité d'une part, et d'autre part pour économiser de l'espace. La plupart des éditeurs de texte Unix interprètent les tabulations comme l'équivalent de 8 espaces, alors que les éditeurs Macintosh semblent interpréter la tabulation comme 4 espaces, ce qui créa beaucoup de confusion lorsque le code avait à circuler entre les systèmes. Les éditeurs de texte modernes peuvent désormais régler la taille de la tabulation de manière arbitraire, en insérant la bonne quantité de tabulations et d'espaces. Ces fonctions permettent également d'éviter les erreurs d'affichage liées aux différentes interprétations des tabulations en n'utilisant que des espaces pour indenter.

Il existe de nombreux programmes qui peuvent indenter des codes de façon automatique. L'un des plus célèbres est indent, inclus dans la plupart des systèmes d'exploitation de type Unix. Ces programmes permettent de mettre en forme des codes ayant un style propre à un programmeur, pour éviter que les programmeurs utilisant d'autres styles ne soient gênés.

[modifier] Style K&R

Le style K&R, nommé ainsi car il est utilisé par Kernighan et Ritchie dans leur livre The C Programming Language est courant en C. Moins courant en Objective-C, C++ ou encore C#, il garde l'accolade ouvrante sur la même ligne que celle de la structure de contrôle, indente d'un niveau entre les deux accolades, et place l'accolade fermante sur une ligne vide, au même niveau d'indentation que la structure de contrôle. Cependant, les fonctions sont indentées d'une façon différente : l'accolade ouvrante est placée sur une ligne vide, au même niveau d'indentation que la déclaration de la fonction. Cette pratique provient du style original du C, qui exigeait la déclaration des arguments pris par la fonction sur des lignes séparées, alors qu'une fonction n'en prenant aucun avait son accolade ouvrante après la déclaration, sur la même ligne.

/* Code au standard ISO */
int main(int argc, char *argv[])
{
    /* Des instructions... */
    if (condition) {
        foo();
        bar();
    }
    else {
        foobar();
        baz();
    }
    /* Des instructions... */
    return EXIT_SUCCESS;
}

Les partisans de ce style l'appellent parfois « The One True Brace Style », à cause de son utilisation par les auteurs du C (bien que des partisans d'autres style sont connus pour utiliser des expressions similaires). Le code source du noyau Linux est écrit avec ce style.

L'avantage de ce style est que l'accolade ouvrante n'utilise pas une ligne à elle seule, et que l'accolade fermante est placée au même niveau d'indentation que la structure de contrôle, de manière logique. Toutefois, cette accolade fermante occupe une ligne à elle seule, bien que ceci soit en partie résolu dans un enchaînement de structures if...else.

if (condition)
{
    foo();
} else {
    bar();
}

En revanche, il est difficile de localiser le début d'un bloc de code par son accolade ouvrante, même s'il est possible de le faire par son accolade fermante.

Les objectifs de ce style sont visiblement de conserver de l'espace à l'écran (et de maintenir le code lisible en même temps) en supprimant une ligne dédiée à un seul caractère (à l'époque de la conception de ce style, les terminaux classiques n'avaient que 24 lignes visibles). Ceci est montré le plus visiblement par un enchaînement comme ci-dessus de if...else, qui prennent un minimum d'espace vertical par rapport à d'autres styles.

Alors que le code Java est parfois écrit en style Allman, une grande partie du code de Java est écrit en style K&R, ce qui s'explique par le fait que les styles originaux de Sun utilisaient le style K&R. De ce fait, beaucoup d'API écrites en Java le sont en style K&R. Ce style est également populaire en ActionScript, en même temps que le style Allman.

Il convient de remarquer que dans le livre de Kernighan et Ritchie, il n'est pas explicitement demandé de choisir le style K&R. Ils y écrivent notamment :

« La position des accolades n'est pas importante, bien que les gens aient de passionnants débats à ce sujet. Nous avons choisi un style parmi les styles les plus populaires. Choisissez un style qui vous convient, et utilisez-le. »