Why doesn't Google just write a script that upon git commit or git push, it re-formated to Google's main standard, and let everyone program how they want.
Perché non importa quanto sia buono un riformattatore, in fin dei conti si tratta di uno strumento stupido e automatizzato, privo di informazioni, intelligenza e creatività. Il risultato finale quando si applica un programma di formattazione a un progetto senza stili di codifica è assolutamente orribile.
Un altro problema è che la riformattazione spesso introduce modifiche artificiali nel repository CM. Supponiamo di aver apportato una piccola modifica a una riga di un file lungo 1000 righe. Supponiamo di aver anche riformattato da un rientro di 2 caratteri a un rientro di 8 caratteri, mantenendo un limite di 80 caratteri. Trovare quale linea hai cambiato non è un compito da poco. git blame
dirà che hai cambiato ogni singola riga nel file.
Lo stile di indentazione, in un certo senso, è "roba piccola" e una delle prime regole guida di stile dovrebbe essere la regola "Non ingannare le piccole cose". Questa regola si applica agli autori delle guide di stile e ai programmatori. Gli autori delle guide di stile non dovrebbero creare regole che facciano sudare le piccole cose; le persone rimarranno contro quelle regole e le ignoreranno. (La maggior parte delle guide di stile per la codifica sono piene zeppe di regole che fanno sudare le piccole cose.)
Per quanto riguarda i programmatori, quei programmatori che devono riformattare il codice in base al loro stile personale per comprendere il codice non sono dei buoni programmatori. Un buon programmatore dovrebbe essere in grado di leggere, capire e modificare il codice che è formattato in modo coerente con uno stile ragionevole, e fare a meno di dover cambiare indentazione, parentesi graffe, ecc.
Le mie regole sono state semplici nelle occasioni in cui ero stato il re della collina ed ero in grado di scrivere gli standard per un progetto: coerenza tra i moduli, con stile di indentazione e importo scelto da un ragionevole insieme di opzioni.