Sono sempre stato scettico sulla riscrittura del codice di lavoro - il porting code non fa eccezione. Tuttavia, con l'avvento del TDD e dei test automatizzati è molto più ragionevole riscrivere e refactificare il codice.
Qualcuno sa se esiste uno strumento TDD che può essere utilizzato per il porting del vecchio codice? Idealmente potresti fare quanto segue:
- Scrivi test di unità indipendenti dalla lingua per il vecchio codice che passa (o fallisci se trovi dei bug!).
- Esegui unit test sull'altra tua base di codice che falliscono.
- Scrivi il codice nella tua nuova lingua che supera i test senza guardare il vecchio codice.
L'alternativa sarebbe quella di dividere il passaggio 1 in "Scrivere unit test nella lingua 1" e "Port unit test in language 2", il che aumenta significativamente lo sforzo richiesto ed è difficile giustificare se la vecchia base di codice non smetterà di essere mantenuta dopo la porta (ovvero, non si ottiene il vantaggio di una continua integrazione su questa base di codice).
EDIT: Vale la pena notare questa domanda su StackOverflow.
expect
. Se hai un sistema legacy in stile Unix che comunica con le pipe usando stdin e stdout, allora quello strumento può essere sicuramente usato. In effetti, sarebbe abbastanza facile testare anche con qualsiasi linguaggio di scripting.
legacy language x
a fancy new language y
. Non stavo tentando di insinuare nulla su Unix!
expect
per implementare i test.