Spediamo un numero di applicazioni Windows. Alcune parti di ciascuna applicazione utilizzano .NET2, alcune 3.5 e una applicazione è ancora VB6. Dobbiamo fare aggiornamenti annuali perché la legge fiscale cambia ogni anno (molti dei nostri utenti sono contabili e attuari). Il codice di refactoring ogni anno è una pratica standard per noi. Quando abbiamo aggiunto .NET 3.5, volevamo WCF e Linq e aggiungeremo altre cose con il passare del tempo (e abbiamo tempo per imparare cosa vogliamo aggiungere).
If I replace old classes with new ones, it risks functionality and need thorough testing again. If I don't, the project size is increasing.
Raccomando di aggiungere test delle unità alla soluzione. A molti sviluppatori non piace fare test, anche test automatizzati. Abbiamo alcuni che commentano i test che ora falliscono a causa del loro nuovo codice che rompe alcuni casi limite più antichi.
Tre buoni libri sono:
Sviluppo applicazioni brownfield in .Net e
Funzionante in modo efficace con il codice legacy
Sviluppo di software orientato agli oggetti, guidato da test
Se non ti puoi permettere le versioni di Visual Studio che includono i test delle unità, allora ti consiglio di consultare altri libri sull'utilizzo di strumenti esterni per il test:
Expert .NET Delivery che utilizza NAnt e CruiseControl.NET
Mentre questo libro è stato scritto per .NET 1.1, ha ancora alcune informazioni utili.
Una pratica che consiglio vivamente è "integrazione continua". Lo scopo di questo è per un processo che viene eseguito ogni volta che il codice viene archiviato per compilare e testare il codice. Sebbene sia laborioso e fastidioso da configurare all'inizio, rende le cose molto facili e ripetibili in seguito. Se stai mantenendo il punteggio, l'integrazione continua ti consente di rispondere "sì" alle domande 2 & 3 sul Test di Joel .