Se sei rigoroso nell'usare le schede ovunque nel progetto, in realtà non influirà sul comando. Di solito il problema è la combinazione di schede e spazi.
Se mischi tab e spazi, devi gestire due linee identiche agli umani ma differenti per strumenti come diff:
if(i == 0) {
do something;
e
if(i == 0) {
do something;
Il motivo per cui le persone evitano le schede e preferiscono gli spazi è che le schede vengono visualizzate in base alle impostazioni dell'editor, quindi uno sviluppatore scrive questo:
for(i=0; i<10; i++) {
do this;
do that;
do it again;
}
Un altro ragazzo arriva con le schede impostate su due invece di quattro e fa una modifica:
for(i=0; i<10; i++) {
do this;
do it different;
do it again better;
}
L'altro ragazzo apre il codice e sembra:
for(i=0; i<10; i++) {
do this;
do it different;
do it again better;
}
Più di dieci sviluppatori e il codice appare rapidamente orribile per tutti. Quindi qualcuno lo "aggiusta" e quindi la tua cronologia è piena di cose come questa:
for(i=0; i<10; i++) {
-do this;
-do it different;
-do it again better;
+do this;
+do it different;
+do it again better;
}
Qualcuno che sta arrivando volendo usare blame
per capire a quale sviluppatore parlare di farlo diversamente non può, perché il registro è pieno di correzioni di formattazione.
Poi qualcuno ha la brillante idea di cambiare tutte le schede in spazi, e quindi una diff mostra l'intero file come se fosse stato modificato.
Meglio evitare il problema con gli spazi anziché le schede. Ciò evita i problemi causati da qualcuno che colpisce la barra spaziatrice quattro volte anziché il tasto Tab.