Befehle, Konstanten, Tabellen und Felder werden mit ihren Token in den Projekt-Quellcode-Dateien (4dm-Dateien) gespeichert. Dies ermöglicht es 4D, sie automatisch umzubenennen. Manchmal möchten Sie aber, dass diese Quellcodedateien ohne Token gespeichert werden, um eine bessere Lesbarkeit mit einem Versionskontrollsystem oder einem externen Code-Editor zu erreichen oder um den Austausch von Code zwischen Projekten zu erleichtern. Sehen wir uns an, wie man 4D dazu bringt, Quellcode ohne diese Token zu speichern.
Was sind Token?
Dieses System ermöglicht es 4D, einen Befehl, eine Konstante, eine Tabelle oder ein Feld in der Legacy-Sprache automatisch zu erkennen, auch wenn diese Elemente umbenannt worden sind.
Einem Befehlsnamen folgen „:C“ und die Befehlskennung, einer Konstante „:K“ und die Konstantenkennung, einer Tabelle „:“ und die Tabellenkennung, einem Feld „:“ und die Feldkennung.
Wenn Sie den Quellcode im Methodeneditor öffnen, benennt 4D die Elemente automatisch entsprechend ihrer Token um. Diese Token werden von 4D im Methodeneditor ausgeblendet, aber wenn Sie einen externen Quellcode-Editor verwenden, sind sie sichtbar.
Das Lesen von Quellcode kann in externen Quellcode-Editoren oder Versionskontrollsystemen aufgrund dieser Token schwieriger sein.
Beispiel für eine Methode mit Token:
Wie kann man sie deaktivieren?
Um das Lesen zu erleichtern, bietet Ihnen 4D jetzt die Möglichkeit, die Quellcode-Dateien ohne Token zu speichern.
Ihnen steht eine neue 4D Einstellung zur Verfügung, mit der Sie Ihre neuen Projekte so gestalten können, dass sie Quellcode-Dateien ohne Token schreiben.
Standardmäßig ist die Option aktiviert, so dass es keine Veränderung gibt: Ihr Quellcode wird weiterhin mit Token gespeichert. Wenn Sie die Option jedoch deaktivieren, werden die Quellcodedateien Ihrer neuen Projekte ohne Token gespeichert.
Beispiel für die gleiche Methode ohne Token:
Was ist mit meinem bestehenden Projekt?
Wenn Sie die 4D-Einstellung für die Tokenisierung deaktivieren, enthält die 4DProject-Datei der neuen Projekte ein boolesches Attribut namens „tokenizedText“, das auf *false* gesetzt ist.
Technisch gesehen können Sie dieses Attribut in die 4DProject Datei eines bestehenden Projekts einfügen, aber es löscht die Token in den bestehenden Quellcodedateien nicht, bis sie durch eine Änderung im 4D Methodeneditor oder mit dem METHOD SET CODE Befehl. Beachten Sie, dass dieses Attribut seit 4D v19 LTS nutzbar ist.
Wie funktioniert es?
Sie wissen vielleicht, dass in einem Projekt der gesamte Quellcode in den 4DM Dateien auf Englisch gespeichert ist, auch wenn Sie in französischer Sprache entwickeln.
Wenn der 4D Methodeneditor eine 4DM Datei öffnet, werden zuerst die Token berücksichtigt. Und dann werden die Befehle, Konstanten, Tabellen und Felder anhand ihres Textes erkannt (und übersetzt, wenn Sie in französischer Sprache entwickeln). Auch wenn Ihr Quellcode ohne Token gespeichert ist, kann er also wie gewohnt im 4D Methodeneditor bearbeitet werden!
Vergessen Sie nicht, dass Sie, wenn Sie die Tokenisierung deaktivieren, die Umbenennung von Befehlen/Konstanten/Tabellen/Feldern in Legacy-Sprachen selbst vornehmen müssen, wie es auch bei anderen Entwicklungsplattformen üblich ist.
Framework-Projekt
Wenn Sie ein Framework-Projekt entwickeln, das mit anderen Projekten geteilt werden soll, können Sie auf Probleme bezüglich der Tabellen und Felder mit Legacy-Code stoßen. Sie können sich nicht darauf beschränken, die Dateien aus dem Framework in das Projekt zu kopieren, wenn es Tabellen enthält, die nicht dieselben IDs haben. Zum Beispiel kann die Tabelle [Setting] Ihres Frameworks die Nummer 1 sein, aber die Nummer 3 in einem Zielprojekt. Wenn die kopierten Quellcodedateien des Frameworks Token enthalten, ersetzt 4D die [Setting]-Tabelle durch die Tabelle mit der ID #1 im Zielprojekt!
Um die gemeinsame Nutzung von Quellcode zu erleichtern, können Sie das Speichern von Token in Ihrem Framework-Projekt deaktivieren. Wenn Sie dann die Framework-Dateien in das Zielprojekt kopieren, wird die [Setting]-Tabelle anhand ihres Namens und nicht anhand ihrer (möglicherweise falschen) ID erkannt!