Eu sempre fui cético em reescrever códigos de trabalho - portar códigos não é uma exceção a isso. No entanto, com o advento do TDD e dos testes automatizados, é muito mais razoável reescrever e refatorar o código.
Alguém sabe se existe uma ferramenta TDD que pode ser usada para portar código antigo? Idealmente, você pode fazer o seguinte:
- Escreva testes de unidade independentes de idioma para o código antigo que passa (ou falha se você encontrar erros!).
- Execute testes de unidade na sua outra base de código que falharem.
- Escreva um código no seu novo idioma que passe nos testes sem examinar o código antigo.
A alternativa seria dividir a etapa 1 em "Escrever testes de unidade no idioma 1" e "Testes de unidade de porta no idioma 2", o que aumenta significativamente o esforço necessário e é difícil de justificar se a antiga base de códigos deixará de ser mantida após a porta (ou seja, você não obtém o benefício da integração contínua nessa base de código).
EDIT: Vale a pena notar esta pergunta no StackOverflow.
expect. Se você possui um sistema legado no estilo Unix que se comunica com pipes usando stdin e stdout, essa ferramenta pode ser usada com certeza. De fato, seria muito fácil testar também com qualquer linguagem de script.
legacy language xpara fancy new language y. Eu não estava tentando sugerir nada sobre o Unix!
expectpara implementar seus testes.