Welchen Rat (Tipps, Techniken, Fallstricke usw.) haben Sie für jemanden, der eine Codebibliothek von einer Sprache in eine andere portiert oder neu schreibt, um in einer anderen Compilerumgebung zu arbeiten?
Welchen Rat (Tipps, Techniken, Fallstricke usw.) haben Sie für jemanden, der eine Codebibliothek von einer Sprache in eine andere portiert oder neu schreibt, um in einer anderen Compilerumgebung zu arbeiten?
Antworten:
Jede Plattform (Sprach- und Systembibliotheken) hat ihre eigene Person. Die Art und Weise, wie ein Ruby-Programmierer seine API entwirft, nutzt die einzigartigen Funktionen und die Kultur, die Ruby zu dem machen, was es ist. Dies unterscheidet sich deutlich von der Art und Weise, wie ein C- oder C ++ - Entwickler seine API entwerfen würde, was sich wiederum von der Art und Weise unterscheidet, wie ein Java- oder C # -Entwickler dies tun würde.
Sie möchten die Ideen von der ursprünglichen Plattform übernehmen und sie in die Konzepte einfügen, die die neue Plattform zu dem machen, was sie ist. Nichts fühlt sich weniger natürlich an als die Verwendung einer Bibliothek, die völlig anders gestaltet ist als die anderen Bibliotheken auf der Plattform. Es gibt eine Reihe von Programmierplattformen, die tatsächlich gut gestaltet und elegant sind. Sie möchten diese Stärken für Ihren Hafen nutzen.
Kennen Sie die nativen Fähigkeiten Ihrer "to" - und "from" -Sprache / Ihres Frameworks.
Ich habe eine Kalenderbibliothek von Javascript auf iOS portiert. iOS hat eine robuste Kalenderklasse, während JavaScript nichts hatte, was mir von Nutzen war. (Ich habe von einem religiösen Kalender auf den Gregorianischen Kalender umgestellt und umgekehrt.)
Ich habe Zeit damit verbracht, die gesamte Bibliothek in Objective-C neu zu schreiben, nur um festzustellen, dass mein Code weitgehend redundant war. (Übrigens, ich habe schlechte Arbeit geleistet und ungenaue Ergebnisse erzielt. Dann trat ich einen Schritt zurück und erkannte meinen Fehler.)
Mehrere zehn Zeilen Konvertierungsmethoden konnten durch etwa sechs Zeilen nativen Framework-Codes ersetzt werden.
Wenn dies ein kritisches Projekt ist (Portierung ist häufig), schreiben Sie einen vollständigen Testplan (idealerweise mit Komponententests in der Zielsprache), bevor Sie jeden Code und das gesamte System portieren.
Es gibt keine Möglichkeit auf der Welt, dass die Portierung beim ersten Versuch 100% genau ist. Sie müssen also im Voraus sicherstellen, dass Sie alles abfangen.
Führen Sie nach Möglichkeit denselben Plan für den ursprünglichen Code aus, da nicht garantiert werden kann, dass er korrekt geschrieben wurde. Ein gleichwertiges Verhalten kann in der Tat von einer falschen Implementierung abhängen.
-> Konzentrieren Sie sich auf die Funktionalität, nicht auf die Art und Weise, wie sie codiert wurde.
-> Überlegen Sie vor dem Schreiben, da einige Elemente bereits von Sprache, Plattform usw. verarbeitet werden können.
-> Nutzen Sie den Vorteil einer neuen Plattform.
"Portierung" - wie Sie anscheinend das Wort verwenden - ist nur TDD mit nervigem Legacy-Code.
Machen Sie die Testfälle richtig. Stellen Sie sicher, dass der Legacy-Code die Testfälle besteht.
Verwerfen Sie dann den Legacy-Code.
Schreiben Sie dann neuen Code, der die Testfälle in der neuen Sprache besteht.
Erstellen Sie einen Klassendiagramm- / Hierarchiebaum, damit Sie wissen, welchen Sie zuerst portieren müssen. Ordnen Sie die grundlegenden Datentypen zu (int -> Int32?). Machen Sie dasselbe für die Datenstrukturen.