Les espaces doivent toujours être utilisés, car les onglets seuls ne sont pas suffisamment flexibles pour de nombreux styles, et le mélange des onglets et des espaces produit (presque) toujours un désordre absolu.
Pour un exemple d'un style qui nécessite généralement des espaces, considérez quelque chose comme:
call_some_function(parameter1,
parameter2,
parameter3,
parameter4,
parameter5,
parameter6,
parameter7);
À moins que vous ne souhaitiez renommer toutes vos fonctions pour être un multiple exact de la taille des onglets (moins un pour la parenthèse), les onglets ne suffiront tout simplement pas.
En ce qui concerne le mélange des tabulations et des espaces, vous rencontrez presque immédiatement un problème grave: les tabulations ne sont pas systématiquement étendues de la même manière. Certains logiciels traitent un onglet comme équivalent à un nombre spécifique d'espaces. D'autres logiciels étendent un onglet modulo d'un nombre spécifique d'espaces - par exemple, un élément après un onglet commencera toujours par un numéro de colonne qui est un multiple de (disons) 8.
Même si vous pouvez vous assurer que les espaces ne se mélangent pas avec vos onglets, vous avez toujours un problème: les onglets jouent également mal avec les polices à largeur variable. Ce problème se produit lorsque (par exemple) vous souhaitez des commentaires de fin alignés:
a.m = 9; // this is the slope
a.i = 4; // this is the intensity
a.x = 1; // this is the x-intercept
En l'état actuel, tous s'alignent parfaitement. Vu avec une police de largeur variable, cependant, les choses deviennent laides. Avec des espaces, les commentaires peuvent (souvent) être légèrement désalignés. Avec les onglets, cependant, le désalignement devient souvent assez radical:
a.m = 9; // this is the slope
a.i = 4; // this is the intensity
a.x = 1; // this is the x-intercept
Soudain, la petite différence de largeur entre le «i» et le «m» ou le «x» dans notre police à largeur variable a été agrandie jusqu'à un taquet de tabulation entier.
L'essentiel est que presque tout changement dans la façon dont vous affichez le code avec des onglets, aussi banal soit-il, peut et va généralement produire un désordre illisible.
Pour répondre à vos autres questions: d'autres l'ont déjà signalé, mais je ne peux pas imaginer que quelqu'un dans un éditeur de programmation (ou beaucoup d'autre chose) utilise réellement la barre d'espace pour insérer les espaces, donc votre question sur: "taper spacespacespacespace" est non pertinent parce que personne ne fait ça de toute façon. De même avec l'espacement arrière: il est difficile d'imaginer un éditeur qui nécessiterait d'appuyer surBkSpc quatre fois pour aller à un tabulation précédent, donc (encore une fois) la question n'est pas pertinente.
En bout de ligne: les onglets sont parfaits si vous (et seulement vous) regarderez jamais votre code, et vous ne le faites qu'avec un seul éditeur que vous ne reconfigurez jamais (du tout!) Ces conditions, cependant, sont si proches de l'impossible imposer qu'il n'y ait qu'une seule réponse raisonnable: ne jamais utiliser d'onglets du tout.
tab
. Si vous ne pouvez pas configurer cela dans votre éditeur préféré, vous avez besoin d'un meilleur éditeur.