Ich war immer skeptisch, Arbeitscode neu zu schreiben - Portierungscode ist keine Ausnahme. Mit dem Aufkommen von TDD und automatisierten Tests ist es jedoch viel vernünftiger, Code neu zu schreiben und umzugestalten.
Weiß jemand, ob es ein TDD-Tool gibt, mit dem alter Code portiert werden kann? Idealerweise können Sie Folgendes tun:
- Schreiben Sie sprachunabhängige Komponententests für den alten Code auf, der erfolgreich ist (oder fehlschlägt, wenn Sie Fehler finden!).
- Führen Sie Unit-Tests auf Ihrer anderen Codebasis aus, die fehlschlagen.
- Schreiben Sie Code in Ihrer neuen Sprache, der die Tests besteht, ohne auf den alten Code zu achten.
Die Alternative wäre, Schritt 1 in "Unit-Tests in Sprache 1 schreiben" und "Unit-Tests in Sprache 2 portieren" aufzuteilen, was den Aufwand erheblich erhöht und schwer zu rechtfertigen ist, wenn die alte Codebasis danach nicht mehr gewartet wird der Port (das heißt, Sie profitieren nicht von einer kontinuierlichen Integration auf dieser Codebasis).
EDIT: Es lohnt sich, diese Frage auf StackOverflow zu beachten .
expect
. Wenn Sie ein Legacy-System im Unix-Stil haben, das über stdin und stdout mit Pipes kommuniziert, kann dieses Tool mit Sicherheit verwendet werden. Tatsächlich wäre es auch ziemlich einfach, mit jeder Skriptsprache zu testen.
legacy language x
bis erfolgt fancy new language y
. Ich habe nicht versucht, etwas über Unix zu sagen!
expect
implementieren Sie dann Ihre Tests.