La formattazione del codice è importante. Anche gli argomenti relativi all'indentazione . E la coerenza è più importante dei miglioramenti minori. Ma i progetti di solito non hanno una guida di stile chiara, completa, verificabile e applicata a partire dal primo giorno, e importanti miglioramenti 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 per aggiungere più colonne alla query. Forse questa è la più complessa di tutte e quattro le query del tuo codice o una query banale tra migliaia. Non importa quanto sia difficile la transizione, decidi che ne vale la pena. Ma come si monitorano le modifiche al codice attraverso le principali modifiche di formattazione? Si può semplicemente rinunciare e dire "questo è il punto in cui ricominciamo", oppure è possibile riformattare tutte le query nell'intera cronologia del repository.
Se utilizzi un sistema di controllo della versione distribuito come Git, puoi ripristinare il primo commit in assoluto e riformattare la tua strada da lì allo stato corrente. 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 sta andando avanti. C'è un modo migliore per cambiare la cronologia che offre il meglio di tutti i risultati:
- Stesso stile in tutti i commit
- Lavoro di unione minima
Per chiarire, non si tratta di best practice quando si avvia il progetto, ma piuttosto cosa si dovrebbe fare quando un refactoring di grandi dimensioni è stato considerato una Good Thing ™ ma si desidera comunque una cronologia tracciabile? Mai la cronologia della riscrittura è ottima se è l'unico modo per garantire che le tue versioni funzionino sempre allo stesso modo, ma per quanto riguarda i vantaggi dello sviluppatore 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?