NOBLEME
DISCUTER
LIRE
JOUER
EN
Afficher le menu latéral

Les différents styles d'indentation

Blog de développement #15 du 25 Octobre 2012 (Il y a 5 ans)

Qu'est-ce que l'indentation ?

Dans le développement informatique, l'indentation est l'ajout d'espaces au début de lignes de code pour rendre ledit code plus lisible.

Du code informatique est, en général, une série de boucles et de déclarations. Un code normalement indenté verra un certain nombre d'espaces ou de tabulations ajoutés à gauche de chaque ligne selon le nombre de boucles et/ou de déclarations qui l'entourent.


Chaque développeur possède son propre style d'indentation, et chacun a une fâcheuse tendance à affirmer que son style d'indentation est le seul style existant qui est bien, que Dieu en personne a déversé de la lumière sur son éditeur de texte, lui indiquant comment indenter de la manière la plus parfaite, optimisée, lisible, et géniale possible.

La réalité est qu'il n'y a (hélas?) aucune véritable convention sur le sujet. J'écris ce devblog dans le but de recenser tous les styles d'indentation que j'ai pu rencontrer jusque-là, de manière semi-documentaire et semi-satirique.

Ils sont présentés ci-dessous, approximativement, dans l'ordre du plus courant au plus ésotérique :



Le style K&R


Beaucoup de développeurs ont commencé leur apprentissage de l'informatique en lisant un livre nommé The C programming language, écrit par Brian Kernighan et Dennis Ritchie. Les intimes surnomment ce livre le "K&R", des initiales de Kernighan et Ritchie.

Les développeurs qui commencent par le K&R ont une tendance à utiliser le style d'indentation utilisé dans ce livre. Même s'il semble être en voie de disparition parmi la nouvelle génération de développeurs, il est probablement le style le plus couramment utilisé aujourd'hui.

Le style d'indentation utilisé dans ce livre suit les critères suivants:
* Les crochets ouvrant les blocs conditionnels ou déclaratifs sont à la suite des instructions, sur la même ligne
* Les crochets fermants ces blocs sont sur leur propre ligne
* Une exception, les crochets ouvrant la déclaration du main() sont placés sur leur propre ligne
* Chaque instruction occupe une ligne, et est indenté une fois par profondeur de déclaration/instruction



Le style Allman


Nommé ainsi en l'honneur de Eric Allman, le style Allman est le second style le plus courant d'indentation. Ces deux styles (Allman et K&R) représentent à eux deux environ 91.879% des styles d'indentation utilisés par les développeurs. Cette statistique très précise a été obtenue à l'aide d'un pifomètre calibré sur un la dièse que j'ai laissé recueillir les précipitations pendant dix jours ouvrables.

Le style d'indentation Allman suit les critères suivants:
* Les crochets ouvrants ou fermants ont le droit à leur propre ligne
* Chaque instruction occupe une ligne, et est indenté une fois par profondeur de déclaration/instruction



Le style maniaque pointilleux


Nommé ainsi par moi-même parce que c'est celui que j'utilise, le style maniaque pointilleux est idéal pour perdre du temps, de l'efficacité, et de l'espace. En contrepartie, du code écrit dans le style maniaque pointilleux est agréable à lire, et par conséquent aisé à maintenir.

Bien entendu, ce style d'indentation est le seul style existant qui est bien, Dieu en personne a déversé de la lumière sur mon éditeur de texte, m'indiquant comment indenter de la manière la plus parfaite, optimisée, lisible, et géniale possible.

Le style d'intentation maniaque pointilleux suit les critères suivants:
* Basé sur le style Allman
* TOUT EST ALIGNÉ VERTICALEMENT
* ABSOLUMENT TOUT
* Non mais vraiment. Tout est aligné verticalement. Vraiment.
* Je ne suis pas maniaque. Non. Vraiment. Non.



Le style GNU


Le nom de ce style d'indentation vient de Richard Stallman, créateur du projet GNU. Ce style est utilisé dans la source de pas mal de grands projets libres, à la grande rage de ceux qui le trouvent illisible (et ont raison).

Le style d'indentation GNU suit les critères suivants:
* Similaire au style Allman
* Les crochets ont le droit à leur propre niveau d'indentation
* Sauf dans les déclarations de fonction où ils ne sont pas indentés



Le style Whitesmiths


Un vieux compileur de C nommé le Whitesmiths Compiler utilisait ce style d'indentation dans sa documentation, d'où son nom. Utilisés par quelques fous voulant s'assurer que leur code soit impénétrable par tous ceux qui tentent de le lire, il combine tous les désavantages des autres styles d'indentation. Il présente toutefois un avantage: Impossible de perdre son travail, personne ne voudra venir reprendre le projet d'un développeur utilisant le style Whitesmiths. Il est assuré de garder son joli petit bout de code pour lui tout seul, et d'être le seul à le maintenir.

Le style d'indentation Whitesmiths suit les critères suivants:
* Basé sur le style Allman
* Sauf que les crochets sont indentés avec leur contenu. Ils sont indentés autant de fois que le contenu du bloc de code qu'ils entourent.
* Personne ne l'aime
* J'ai dit personne
* Comme vous vous en doutez, je suis très objectif et une référence en la matière, j'ai donc raison
* Personne.



Le banner style


Est-il possible de rendre le style Whitesmiths encore moins lisible? Oui! Le banner style est là pour sauver la journée ! Hourra !

Le style d'indentation banner suit les critères suivants:
* Basé sur le style Whitesmiths
* Sauf que les crochets s'ouvrent en fin de ligne précédente, comme dans le style K&R
* Devient encore plus insupportable lorsqu'il est appliqué à un langage de balisage (tel que le HTML)



Le lisp style


Les développeurs utilisant le langage Lisp sont une espèce en voie de disparition. Ils se sont adaptés en trouvant une méthode imparable pour rendre leur code illisible: l'ajout à première vue aléatoire (mais, disent-ils, tout à fait lisible et compréhensible) de parenthèses absolument partout dans leur code, indenté si possible de façon totalement aléatoire. Leur piste est impossible à suivre, leurs motivations incompréhensibles.

Le style d'indentation lisp suit les critères suivants:
* Des parenthèses partout
* Lesdites parenthèses sont indentées suivant une logique barbare
* Oh mon dieu pourquoi



Le style jemenfoutiste


Certains développeurs n'en ont juste rien à carrer de produire du code lisible. Ils utilisent un style bourrin, consistant à faire du code aussi compact et aussi peu commenté que possible. Pour lire leur code, dix fois plus de temps que nécessaire est requis, et la présence d'une boite de cachets d'aspirine à portée de main est recommandée.

Généralement, les utilisateurs de ce style d'indentation se croient des génies de l'informatique, des pointes, la crème de la crème de leur métier. C'est faux. Ce sont des parasites qui font perdre aux autres un temps fou. Derrière leurs prétextes pompeux d'efficacité et de qualité se cache un manque de respect complet des autres développeurs, d'où le nom de ce style.

Le style d'indentation jemenfoutiste suit les critères suivants:
* Compact, très compact
* Parfaitement logique et ordonné mais illisible
* Goût prononcé pour l'opérateur ternaire histoire de rendre le code bien chiant à décrypter
* Aussi peu d'indentation que nécessaire



Le style diplômé<


Je baptise ce style d'indentation "le style diplômé" vu qu'à chaque fois que je vois quelqu'un le faire, il s'agit d'un nouveau développeur fraichement sorti d'une école d'informatique.

Le style d'indentation diplômé suit les critères suivants:
* Aucune logique
* Tendance à mixer les styles d'indentation
* Persuadé que ce qu'il fait est parfait et qu'il a raison



Le style collaboratif


Lorsque plusieurs développeurs collaborent sur un projet, il y aura forcément tôt ou tard un boulet pour ne pas utiliser le même style d'espacement que les autres. Par exemple, si tout le monde se met d'accord pour que les indentations soient représentées par quatre espaces, un imbécile va se pointer et insérer un bout de code utilisant des tabulations au lieu d'espaces comme indentation. Le fichier va tourner, personne ne va comprendre d'où viennent les drôles d'espaces, et le tout deviendra absolument illisible.

Le style d'indentation collaboratif suit les critères suivants:
* Largeur des espaces d'indentation variable de manière aléatoire et illogique
* Personne ne sait qui est le boulet qui sabote l'indentation
* Le projet finit par être abandonné car il devient vite trop illisible
* Points haine bonus si chacun a sa propre manière d'indenter le code
* Double bonus haine si quelqu'un fait du Whitesmiths et du banner
* Bon, ça serait bien d'utiliser un outil de version de contrôle et d'imposer un coding style au projet, non ?



J'ai tendance à croire que le style d'indentation utilisé par un développeur en dit long sur sa personnalité.
Montre-moi l'espacement du contenu de ton code et je te dirai qui tu es.

L'indentation est un "débat silencieux" du monde de l'informatique: Tout le monde a son opinion dessus, mais personne n'a vraiment envie d'en parler. Il n'y a pas un style qui soit véritablement meilleur qu'un autre, ni de convention générale que tout le monde doit respecter. L'indentation, c'est un peu comme une conviction culturelle ou religieuse. Chacun son style, chacun ses croyances.

Je conclus ce devblog sur une citation très profonde, venant de Guillaume P., un ancien collègue du carton rose préféré de tous les NoBlemeux, ThArGos. Pour ceux qui n'arrivent pas à déchiffrer: "Pense à bien incanter le code".


Vous avez mon autorisation pour imprimer cette image et la coller à l'arrière de votre voiture, ou sur la tour de votre ordinateur. Le niveau de philosophie atteint par cette phrase dépasse le maximum légalement autorisé.
Quand je la lis, je suis aware.

J'espère que vous aussi.