Prima di fare questa domanda, la prefaggerò con il nostro ambiente. Il mio team è composto da 3 programmatori che lavorano su più progetti diversi. A causa di ciò, il nostro uso dei test è per lo più limitato ai test molto generali della scatola nera.
Prendi anche le seguenti ipotesi:
- I test delle unità verranno eventualmente scritti, ma sono in ordini rigorosi di refactoring
- Ignora le tecniche Test-Driven Development comuni quando viene fornito questo ambiente, il mio tempo è limitato.
- Capisco che se ciò fosse stato fatto correttamente , il nostro team avrebbe effettivamente salvare denaro nel lungo periodo termine con la costruzione di Unità-Test prima mano.
Sto per ridefinire una parte abbastanza grande del codice che è fondamentale. Mentre ritengo che il mio codice funzionerà in modo preciso una volta terminato e dopo il test della scatola nera, mi rendo conto che ci saranno nuovi dati che il nuovo codice potrebbe non essere in grado di gestire.
Quello che volevo sapere è come mantenere il vecchio codice che funziona il 98% delle volte in modo che possiamo chiamare quelle subroutine nel caso in cui il nuovo codice non funzioni correttamente. In questo momento sto pensando di separare il vecchio codice in un file di classe separato e aggiungere una variabile alla nostra configurazione che dirà al programma quale codice utilizzare. C'è un modo migliore per gestire questo?
NOTA: Usiamo il controllo di revisione e abbiamo build archiviati in modo che il client possa sempre ritornare a una build precedente, ma vorrei vedere se c'è un modo decente per farlo oltre a tornare. Voglio questo in modo che possano usare le altre nuove funzionalità fornite nella nuova build.
Modifica: Mentre sono d'accordo, dovrò scrivere Test di unità per questo, non credo che catturerò tutto con loro. Sto cercando modi per essere in grado di ripristinare il vecchio codice funzionale se qualcosa dovesse accadere. Mentre so che questa è una pratica sbagliata, sto pensando di rimuovere questo codice dopo che il nostro team è in grado di garantire che il nuovo codice funzioni agli stessi standard del vecchio.