PROJET AUTOBLOG


Shaarli - Les petits liens d'Alda

Site original : Shaarli - Les petits liens d'Alda

⇐ retour index

L'indentation par tabulation…

mardi 25 novembre 2014 à 20:08
C'est le mal. C'est juste le mal. Et je vais vous expliquer pourquoi tous les problèmes d'indentation du monde sont dus à ces saloperies de tabulations.

Le premier élément qui entre en jeux c'est que la largeur d'une tabulation est CONFIGURABLE. Je peux dire à certains éditeurs que je veux 4 caractères, je peux dire à d'autres que j'en veux 2, ou d'autre 8.

Moi tout seul ça n'aurait aucun intérêt de faire ça, mais je suis pas tout seul au monde. Potentiellement, quelqu'un va ouvrir mon code avec un éditeur configuré différemment du mien et il va trouver ça illisible.

Et ça c'est dans le cas où il est possible de le configurer car parfois ce n'est pas possible (je pense à l'affichage des forges comme Github ou Gitlab par exemple.)

Le second élément, c'est qu'en utilisant la tabulation comme méthode principale d'indentation, on peut se retrouver FORCÉ d'utiliser des espaces pour l'alignement du code. Par exemple sur l'image linkée, je chaîne les méthodes de mon objet en alignant les T_OBJECT_OPERATOR successifs. À la ligne 6, avec des tabulations je dois rajouter un espace pour corriger l'alignement. Et PAF on se retrouve avec une indentation mixte. Et si votre langage se base sur l'indentation pour fonctionner, ça marche pas (Python 3 aime pas du tout ça d'ailleurs)

Le dernier élément (et qui a à voir avec le fait qu'une tabulation ce n'est pas FAIT pour indenter mais pour tabuler) c'est cette chose méconnue qui s'appelle le tabstop. Avec une tabulation réglée sur 4 on a un tabstop tous les 4 caractères donc 0, 4, 8, 12, 16, 20 etc.

Dans l'image linkée à partir de la ligne 8 j'aligne les valeurs de mon tableau et on voit bien en comparant que la ligne 9 a une seule tabulation après la clé là où la ligne 10 a… 3 espaces. Parce que la tabulation va jusqu'au tabstop. Dans un éditeur ou une forge qui ne supporte pas les tabstops ou qui a une configuration différente, la ligne 9 aura un caractère de trop parce qu'une tabulation fera 4 de long et pas 3. Donc pour aligner des trucs correctement on doit à nouveau forcément utiliser des espaces.

Au final soit on utilise des tabulations à configurer selon les éditeurs de chacun⋅e, on compense les erreurs avec des espaces et on aligne les éléments aussi avec des espaces. Soit on utilise toujours des espaces, ça s'affiche partout pareil et on ne configure rien nulle part si ce n'est le raccourci pour insérer X espaces quand on appuie sur la touche tab du clavier parce que ça va quand même plus vite.

Bref, au final c'est peut-être pas pour rien si les communautés PHP, Python, Java ou JS recommandent 4 espaces et si côté HTML et Ruby on recommande 2 espaces. :-)
(Permalink)