Domanda

Effettui prima il refactoring del tuo SQL?La tua architettura?o la tua base di codice?Cambiate lingua?Butti via tutto e ricominci da zero?[Non refactoring]

È stato utile?

Soluzione

Sto aggiungendo test unitari a una codebase spaghetti legacy di grandi dimensioni.

Il mio approccio è che, quando mi viene chiesto di risolvere un problema, provo a creare un nuovo wrapper attorno alla parte della base di codice che è rilevante per il mio compito attuale.Questo nuovo wrapper è sviluppato utilizzando TTD (scrivendo prima il test).Qualche volta chiamano in il codice legacy non testato dall'unità.Altre volte creo una nuova copia di un modulo esistente e inizio a fargli molta violenza.A volte riscrivo la funzionalità da zero.

Ma dato che lo sto testando abbastanza bene, mi sento abbastanza in controllo.

Ciò che trovo con questo codice base, che è stato sviluppato con troppe operazioni di copia e incolla, è che una volta che capisco una parte particolare ed estraggo alcune funzioni da essa (che vengono eseguite prima di test) ...queste funzioni spesso risultano utilizzabili in molti altri posti e quindi aumenta la velocità di sostituzione del codice legacy con le mie librerie testate sull'unità.

Non provo (e non ho l'autorità per) provare a riscrivere o aggiungere test a parti del codice che non sono toccate dal mio problema attuale (di solito un bug che sto cercando di risolvere) ma ho un atteggiamento proattivo abbastanza aggressivo su tutto ciò che viene toccato e potrebbe essere rilevante.

Aggiornamento :Penguinix ha chiesto:"In quali lingue lavori?C'è un cablaggio di prova specifico che consigliate?"

In questo momento sto lavorando in...ehm...Parotite!Ma lo stesso principio funziona ovunque.

Qualcosa che ha trasformato la mia comprensione di UT è stata MinUnit: http://www.jera.com/techinfo/jtns/jtn002.html

Quando ho visto MinUnit, è stato una specie di momento "zen" di illuminazione per me.Ha eliminato i malintesi che avevo sul fatto che i test unitari fossero qualcosa di complicato che richiedeva sofisticati framework OO, ecc.Ho capito che UT stava solo scrivendo una serie di test.La "imbracatura" puoi scriverla tu stesso, in circa 3 minuti, nella lingua che preferisci.Vai avanti e fallo.

Altri suggerimenti

Questo dipende davvero dallo stato della base di codice...ci sono classi numerose?una lezione con mega-metodi?Le classi sono strettamente collegate?la configurazione è un peso?

Considerato questo, suggerisco la lettura Lavorare in modo efficace con il codice legacy, individuando i problemi e applicando i consigli.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top