Dato che il codice sorgente è nel controllo del codice sorgente come git, hai un controllo abbastanza preciso sulle varie versioni del tuo software. Quindi hai a disposizione entrambe le opzioni.
Quello che fai in pratica dipende dal bug. Diciamo che hai un sito di e-commerce e il bug è, quando compro due articoli non aggiunge il prezzo del secondo.
Guardi il codice e vedi un errore nell'oggetto cestino, non si moltiplica per la quantità, quindi lo aggiungi e sembra che risolva il problema.
Ma poi il giorno dopo ottieni un altro bug report, quando aggiungi calze ti addebita per due coppie. ti rendi conto che la quantità di calzini è 2 quando acquisti una singola coppia e la tua correzione non funziona per i calzini.
Quindi, ora hai una scelta, cambia il codice in modo che le coppie abbiano la quantità 1 e mantengano la correzione originale in posizione. Oppure, sostituisci il codice di calcolo con qualcosa di più complicato che controlla le coppie.
Cambiare la quantità potrebbe avere ogni sorta di ripercussione. Non vuoi scherzare, anche se sembra pazzesco contare le coppie come 2 cose.
Inoltre, se non fossi lo sviluppatore che ha inserito la parola "moltiplica per quantità", beh, non sai davvero se è sbagliato o giusto. Probabilmente devi solo aggiungere una brutta correzione al codice, 'se l'articolo è una coppia, dividi la quantità per 2 prima di moltiplicarla'. Sembra male, ma in molti casi è la cosa migliore da fare.
Con le app in diretta devi soppesare il rischio di rompere le cose rispetto all'eleganza della soluzione. Spesso il cambiamento più rapido e minimo è economicamente corretto.
Questo è il motivo per cui i test automatici sono così importanti. Se hai fiducia che non hai rotto nulla, allora sei in grado di scrivere un codice migliore. Perché puoi refactoring di più per lo stesso livello di rischio.