Non ho avuto molta fortuna con piccole modifiche incrementali quando il codice che eredito è davvero pessimo. In teoria, il piccolo approccio incrementale suona bene, ma in pratica tutto ciò che finisce è una migliore, ma ancora mal progettata applicazione che tutti pensano sia il VOSTRO design. Quando le cose si rompono, le persone non pensano più che sia dovuto al codice precedente, ora diventa TUA colpa. Quindi, non utilizzerei la parola riprogettazione, refactoring o qualsiasi altra cosa che implichi un tipo di gestore che stai cambiando le cose a modo tuo a meno che non stavo davvero andando a farlo a modo mio. Altrimenti, anche se potresti aver risolto dozzine di problemi, tutti i problemi che ancora esistevano (ma non sono stati scoperti) saranno ora attribuiti alla tua rielaborazione. E ti assicuriamo che se il codice è cattivo, le tue correzioni scopriranno molti più bug che sono stati semplicemente ignorati prima perché il codice era così brutto per cominciare.
Se davvero sai come sviluppare sistemi software, farei una riprogettazione dell'intero sistema. Se non sai DAVVERO come progettare un buon software, allora direi di attenermi alle piccole modifiche incrementali, altrimenti potresti finire con un codice base altrettanto cattivo dell'originale.
Un errore che si verifica spesso durante la riprogettazione è che le persone ignorano il codice originale. Tuttavia, la riprogettazione non deve significare totalmente ignorare il vecchio codice. Il vecchio codice doveva ancora fare ciò che il tuo nuovo codice deve fare, quindi in molti casi i passaggi necessari sono già nel vecchio codice. Copia e incolla, quindi modificare funziona a meraviglia quando ridisegnare i sistemi. Ho scoperto che in molti casi, la riprogettazione e riscrittura di un'applicazione e il furto di snippet dal codice originale sono molto più veloci e molto più affidabili di piccole modifiche incrementali.
Fred Brooks ha detto di "costruirne uno da buttare", ma non stava utilizzando tecniche agili e qualsiasi funzionalità aggiunta veniva documentata e compresa e quindi era possibile riscriverla senza perdita. – 13ren
Senza contare che ci sono SEMPRE molti più dettagli che è necessario implementare a cui non hai pensato quando hai delineato il grande progetto. –