Zawsze byłem sceptycznie nastawiony do przepisywania działającego kodu - przenoszenie kodu nie jest tu wyjątkiem. Jednak wraz z nadejściem TDD i automatycznymi testami znacznie bardziej rozsądne jest przepisywanie i refaktoryzacja kodu.
Czy ktoś wie, czy istnieje narzędzie TDD, którego można użyć do przeniesienia starego kodu? Najlepiej byłoby wykonać następujące czynności:
- Napisz testy jednostkowe agnostyczne dla starego kodu, który przejdzie (lub zawiedzie, jeśli znajdziesz błędy!).
- Przeprowadź testy jednostkowe na innej podstawie kodu, które się nie powiodły.
- Napisz kod w swoim nowym języku, który przejdzie testy bez patrzenia na stary kod.
Alternatywą byłoby podzielenie kroku 1 na „Napisz testy jednostkowe w języku 1” i „Testy jednostek portu do języka 2”, co znacznie zwiększa wymagany wysiłek i trudno uzasadnić, czy stara baza kodu przestanie być utrzymywana po port (to znaczy, że nie zyskujesz ciągłej integracji na tej podstawie kodu).
EDYCJA: Warto zwrócić uwagę na to pytanie na StackOverflow.
expect
. Jeśli masz system starszego typu w stylu uniksowym, który komunikuje się z potokami za pomocą stdin i stdout, to z pewnością można użyć tego narzędzia. W rzeczywistości testowanie w dowolnym języku skryptowym byłoby dość łatwe.
legacy language x
do fancy new language y
. Nie próbowałem sugerować niczego o Uniksie!
expect
do wdrożenia testów.