La modifica del codice in qualche modo comporta il rischio di introdurre nuovi bug nel codice. Più grandi sono i cambiamenti, maggiore è il rischio. È possibile mitigare tale rischio tramite test unitario (e integrazione / sistema / ...) (ma non eliminarlo mai completamente).
Ovviamente, una riscrittura totale ha un rischio significativamente più alto rispetto alla semplice correzione di un bug specifico. Per creare una correzione adeguata, è necessario comprendere il problema e la soluzione abbastanza bene in modo che la risoluzione di un problema non rotti altri casi di utilizzo. Ma così è il caso di una riscrittura. Se non capisci cosa sta succedendo durante il debug, ovviamente il codice in questione è complesso, quindi riscriverlo sarà tutt'altro che banale, e di solito richiede più tempo. Che, in una scadenza ristretta, non è una buona notizia ...
Inoltre, essere stanchi e sotto pressione aumenta sempre il rischio di prendere decisioni sbagliate e di sbagliare, causando così ulteriori bug.
Quindi personalmente preferirei strongmente il debug e il bug concreto anziché riscriverlo, tranne quando il codice in questione è veramente terribile e ho una specifica chiara (sotto forma di documenti e / o test di unità) di ciò che dovrebbe fare e ho abbastanza tempo per farlo correttamente.
(Si noti inoltre che se il codice è davvero così terribile, è estremamente raro che sia adeguatamente documentato e / o testato sull'unità. In questo caso, è necessario ancora più tempo per costruire una suite di test di unità adeguata per "registrare" "il comportamento del codice corrente, per essere in grado di verificare che la nuova implementazione lo riproduca fedelmente in ogni aspetto tranne la correzione di bug.)
Se sei bloccato con il tuo approccio attuale, è davvero una buona idea riposarti e fare qualcos'altro per rilassare la mente e permettere al tuo subconscio di lavorare sul problema in pace. È anche utile chiedere aiuto a un collega (o StackOverflow). Vedi questo thread correlato in precedenza per maggiori dettagli:
Affrontare la frustrazione quando le cose non funzionano