Я завжди скептично ставився до переписування робочого коду - перенесення коду не є винятком із цього. Однак із появою TDD та автоматизованим тестуванням набагато розумніше переписати та рефакторний код.
Хтось знає, чи є інструмент TDD, який можна використовувати для перенесення старого коду? В ідеалі ви можете зробити наступне:
- Складіть мовні тести агностичних одиниць для старого коду, який проходить (або виходить з ладу, якщо ви знайдете помилок!)
- Запустіть тестові одиниці на іншій базі коду, які не вдаються.
- Напишіть код новою мовою, яка проходить тести, не дивлячись на старий код.
Альтернативою було б розділити крок 1 на "Записати одиничні тести мовою 1" та "Тести портових одиниць на мову 2", що значно збільшує необхідні зусилля і важко виправдати, якщо стара база коду перестане підтримуватися після порт (тобто ви не отримуєте переваги від постійної інтеграції на цій базі коду).
EDIT: Варто відзначити це питання на StackOverflow.
expect
. Якщо у вас є застаріла система Unix, яка спілкується з трубами за допомогою stdin та stdout, тоді цей інструмент можна використовувати точно. Насправді, це було б досить легко перевірити з будь-якою мовою сценаріїв.
legacy language x
до fancy new language y
. Я не намагався нічого натякнути на Unix!
expect
для реалізації ваших тестів.