De mon côté, je préfère les tabulations pour les raisons suivantes :
- Les développeurs ont des préférences visuelles différentes. Sur les projets sur lesquels je travaille, entre deux niveaux d'indentation successifs, j'aime bien voir un écart qui a la taille de 3 ou 4 espaces. Mais d'autres développeurs préfèrent 2 espaces, d'autres 6 espaces.
Si un bout de code est indenté correctement avec des tabulations, chacun pourra le lire avec ses propres préférences. - Les tabulations sont plus faciles à supprimer. Pour supprimer une tabulation, il suffit de taper une seule fois sur une des touches "supprimer" ou "retour arrière". Pour supprimer 4 espaces, il faut taper 4 fois sur une de ces touches, à moins de sélectionner plusieurs espaces pour les supprimer d'un coup.
- Le choix des tabulations est réversible : Si, un jour, on veut remplacer toutes les tabulations par, par exemple, 4 espaces, il suffit de faire un rechercher-remplacer. Le contraire n'est pas possible.
- Les tabulations prennent moins de place en mémoire.
Je reconnais cependant un inconvénient intrinsèque aux tabulations :
Admettons qu'un code indenté avec des tabulations soit maintenu par deux développeurs, dont un qui affiche les tabulations avec une taille de 2 espaces et l'autre avec une taille de 6 espaces.
Le premier aura moins tendance à revenir à la ligne que le deuxième. Du coup, quand le deuxième lira du code écrit par le premier, il aura plus tendance à faire du défilement horizontal avec son éditeur de texte.
Ou alors, il faut que celui qui affiche les tabulations avec une taille de 6 espaces travaille avec un écran plus large.

Il y a un autre inconvénient, que je vis beaucoup au quotidien, mais qui n'est pas intrinsèquement la faute des tabulations :
Beaucoup d'éditeurs de texte ne savent pas gérer correctement les tabulations ! En fait, je n'en ai toujours pas trouvé un qui sait les gérer correctement ! Ou alors, je n'ai pas trouvé les bonnes options.
Je prends un exemple illustratif : admettons que j'ai le code suivant :
1 2
| uneFonction(parametre1, // avant la fonction : 2 tabulations
parametre2, // avant le paramètre : 2 tabulations puis 12 espaces |
Ensuite, je fais un retour à la ligne. Mon curseur se trouve alors juste en dessous du début de "parametre2". C'est bien.
Sauf que, à gauche du curseur, au lieu d'avoir 2 tabulations puis 12 espaces, j'ai, par exemple, 5 tabulations et 0 espace (si j'affiche chaque tabulation avec une taille de 4 espaces) !
1 2 3
| uneFonction(parametre1, // avant la fonction : 2 tabulations
parametre2, // avant le paramètre : 2 tabulations puis 10 espaces
parametre3); // avant le paramètre : 5 tabulations puis 0 espace !!!!! |
Du coup, quand on affiche le code avec une taille différente pour les tabulations, "parametre2" est toujours affiché sous "parametre1", mais "parametre3" est décalé !
13 |
0 |