La formattazione del codice è importante. Anche il rientro è importante . E la coerenza è più importante dei miglioramenti minori. Ma i progetti di solito non hanno una guida di stile chiara, completa, verificabile e applicata dal primo giorno, e miglioramenti importanti possono arrivare ogni giorno. Forse lo trovi
SELECT id, name, address
FROM persons JOIN addresses ON persons.id = addresses.person_id;
potrebbe essere scritto meglio come / è scritto meglio di
SELECT persons.id,
persons.name,
addresses.address
FROM persons
JOIN addresses ON persons.id = addresses.person_id;
mentre si lavora sull'aggiunta di più colonne alla query. Forse questa è la più complessa di tutte e quattro le query nel tuo codice o una banale query tra migliaia. Non importa quanto sia difficile la transizione, decidi che ne vale la pena. Ma come si tengono traccia delle modifiche al codice nelle principali modifiche alla formattazione? Potresti semplicemente rinunciare e dire "questo è il punto in cui ricominciamo", oppure potresti riformattare tutte le query nell'intera cronologia del repository.
Se stai usando un sistema di controllo di versione distribuito come Git, puoi tornare al primo commit di sempre e riformattare da lì allo stato attuale. Ma è un sacco di lavoro e tutti gli altri dovrebbero mettere in pausa il lavoro (o essere preparati per la madre di tutte le fusioni) mentre continua. Esiste un modo migliore per cambiare la cronologia che offre il meglio di tutti i risultati:
- Lo stesso stile in tutti i commit
- Lavoro di unione minimo
?
Per chiarire, non si tratta delle migliori pratiche all'avvio del progetto, ma piuttosto cosa si dovrebbe fare quando un grande refactoring è stato considerato Good Thing ™ ma si desidera comunque una cronologia rintracciabile? Non riscrivere mai la cronologia è fantastico se è l'unico modo per garantire che le tue versioni funzionino sempre allo stesso modo, ma per quanto riguarda i vantaggi per gli sviluppatori di una riscrittura pulita? Soprattutto se hai modi (test, definizioni di sintassi o un binario identico dopo la compilazione) per assicurarti che la versione riscritta funzioni esattamente allo stesso modo dell'originale?