J'ai toujours été sceptique quant à la réécriture du code de travail - le portage de code ne fait pas exception à cela. Cependant, avec l'avènement du TDD et des tests automatisés, il est beaucoup plus raisonnable de réécrire et de refactoriser le code.
Est-ce que quelqu'un sait s'il existe un outil TDD qui peut être utilisé pour porter l'ancien code? Idéalement, vous pourriez faire ce qui suit:
- Rédigez des tests unitaires indépendants de la langue pour l'ancien code qui réussit (ou échoue si vous trouvez des bogues!).
- Exécutez des tests unitaires sur votre autre base de code qui échouent.
- Écrivez du code dans votre nouveau langage qui réussit les tests sans regarder l'ancien code.
L'alternative serait de diviser l'étape 1 en "Écrire des tests unitaires dans la langue 1" et "Port tests unitaires dans la langue 2", ce qui augmente considérablement l'effort requis et est difficile à justifier si l'ancienne base de code va cesser d'être maintenue après le port (c'est-à-dire que vous n'obtenez pas l'avantage d'une intégration continue sur cette base de code).
EDIT: Il convient de noter cette question sur StackOverflow.
expect
. Si vous avez un système hérité de style Unix qui communique avec les canaux utilisant stdin et stdout, cet outil peut être utilisé à coup sûr. En fait, il serait également assez facile de tester avec n'importe quel langage de script.
legacy language x
à fancy new language y
. Je n'essayais pas d'impliquer quoi que ce soit à propos d'Unix!
expect
pour implémenter vos tests.