Les tabulations séparent le sens (profondeur d’imbrication) de la présentation (largeur à l’écran), ce que les espaces n’offrent pas.
Une tabulation code un niveau d’indentation, indépendamment de la largeur d’affichage, ce qui préserve l’intention du développeur dans le fichier et laisse la mise en forme à l’éditeur. Chacun peut régler la largeur (2, 4, 8…) selon ses besoins sans introduire de diffs ni casser l’alignement des autres. Cette séparation sémantique réduit les frictions multi-plateformes (polices proportionnelles, terminaux, thèmes) et rend la lecture plus inclusive. On évite ainsi les guerres d’« espaces 2 vs 4 » en laissant l’interprétation au tooling plutôt qu’au dépôt.
À structure identique, les tabulations réduisent le poids des sources et du trafic Git.
Une tabulation remplace typiquement 4 espaces: sur 1 000 lignes avec 2 niveaux d’indentation moyens, on compte environ 8 000 espaces contre 2 000 tabulations, soit 6 000 octets économisés (environ 75% sur la seule partie indentation). À l’échelle d’un monorepo de millions de lignes, cela se traduit par des Mo économisés en stockage, en transferts Git et en artefacts CI. Moins d’octets, c’est aussi des clones plus rapides et des caches plus efficaces. Ce gain est mécanique et augmente avec la profondeur moyenne d’imbrication.
Les diffs et le git blame sont plus stables avec des tabulations, car une réindentation touche moins de caractères.
Changer un niveau d’indent sur 200 lignes en 4 espaces ajoute 800 caractères, contre 200 avec des tabulations: le diff est environ 75% plus petit pour une modification purement structurelle. Des diffs plus courts rendent les revues de code plus faciles et limitent le bruit dans le blame, qui reste focalisé sur les véritables changements sémantiques. Cela diminue aussi le risque de conflits lors des rebasages, car moins de texte est modifié. En pratique, on gagne en lisibilité, en vitesse de relecture et en historique plus propre.
Les tabulations s’alignent avec l’outillage et des standards éprouvés de l’écosystème.
Makefile exige les tabulations, le style du noyau Linux promeut les tabs, et gofmt indente par défaut avec des tabulations: ce ne sont pas des curiosités, mais des preuves d’adoption robuste. Les IDE/éditeurs modernes (VS Code, Vim, JetBrains) gèrent nativement la largeur d’affichage et l’insertion de tabs, les linters/formatters savent imposer « tabs pour l’indentation, espaces pour l’alignement ». Cette convention évite les mélanges dangereux et les artefacts visuels entre polices. Résultat: moins de bikeshedding, plus de cohérence inter-équipe et un pipeline outillé plus fiable.