Präambel
JMP Scripting Language (JSL) bietet Skriptfunktionen, die von der automatisierten Codegenerierung (ähnlich einem Makrorecorder) bis zu einer integrierten Entwicklungsumgebung für die Anwendungsentwicklung reichen. Wie bei jeder Programmiersprache führt die Anwendung guter Programmierpraktiken auf JSL-Projekte zu robusten und einfach zu unterstützenden Skripten und Anwendungen. Da JSL allgemeine Programmieraufgaben vereinfacht hat, wird die Notwendigkeit dieser Praktiken leicht übersehen oder ignoriert.Angesichts der Leistung und Flexibilität, die JSL bietet, setzt die Missachtung bewährter Programmierpraktiken Benutzer potenziellen Risiken aus. Dieses kurze Dokument wurde geschrieben, um Sie auf diese Risiken aufmerksam zu machen und Programmierstrategien bereitzustellen, mit denen Sie sie handhaben können.
Allgemeine Best Practices
- Beginnen Sie immer mit einem schriftlichen Plan oder einer Problembeschreibung und verwenden Sie diese, um eine Checkliste mit klaren Ergebnissen zu erstellen.Diese helfen dabei, Umfangserweiterungen zu verhindern und das Projekt am Laufen zu halten.
- Verwenden Sie nach Möglichkeit vorhandene Strukturen (Funktionen, vorgefertigter Code, Bibliotheken usw.), anstatt alles von Grund auf neu zu entwickeln.
- Während es oft unmöglich ist, alle möglichen Eingabesituationen zu testen, sollten mehrere Eingabebedingungen verwendet werden. Es sollten auch Tests mit Vorabversionen von JMP durchgeführt werden. Wenn möglich, sollte ein gespeicherter Satz von Testdateien oder ein schriftlicher Satz von Testbedingungen (z. B. Dialogfeldeinstellungen) verwendet werden.
- Es sollte ein Nachfolgeplan erstellt werden, der deutlich macht, wer für die Pflege des Codes verantwortlich ist, wenn die ursprünglichen Ersteller nicht mehr für die Pflege des Codes verantwortlich sind.
Skriptstruktur
- Unabhängig davon, ob Sie Code alleine oder in einer Gruppe entwickeln, ist es ratsam, sich an einem Styleguide zu orientieren. Der Leitfaden sollte Informationen wie Namenskonventionen für Variablen und Funktionen, Abstände um Codierungselemente (z. B. Formatierung), Kommentare usw. enthalten. Das Dokument führt zu mehr Konsistenz über Skripte und Anwendungen hinweg und macht sie lesbarer und wartbarer. Links zu Beispielen sind zu finden hier .
- Am Anfang des Skripts sollte ein Kommentarabschnitt mit Informationen wie Versionsnummer, Autor, Überarbeitungsdatum, erforderlichen und optionalen Eingaben, Fehlerbehebungen aus früheren Versionen und der getesteten JMP-Version enthalten sein. Es sollte jedes Mal aktualisiert werden, wenn das Skript geändert wird, damit ein Verlauf der Änderungen erhalten bleibt. Eine kurze Beschreibung des Programmverhaltens einschließlich Umfang und Einschränkungen sollte ebenfalls enthalten sein.
- Kommentare sollten jedem Codeabschnitt hinzugefügt werden, in dem die Wahl der Datenstruktur, des Steuerungsflusses oder der Logik nicht sofort offensichtlich ist.
- Variablen sollten nicht außerhalb des Skripts/der Funktion/des Blocks definiert werden, in dem sie ursprünglich definiert wurden. Globale Variablen sollten vermieden werden, es sei denn, es ist absolut notwendig. Die JSL-Scoping-Funktionalität sollte verwendet werden, um diese Einschränkungen zu implementieren.
- Wann immer möglich, sollten Skript- oder Anwendungsfunktionen in kleine unabhängige Codeblöcke aufgeteilt werden. Dieser Code kann in separaten Dateien oder JSL-Datenstrukturen gespeichert werden.
Liefermethoden
- Erwägen Sie die Verwendung eines Repositorys, eines Versionskontrollsystems usw., um Codesammlungen zu verwalten und sicherzustellen, dass Benutzer auf die aktuellste Version eines Skripts zugreifen können.
- Wo möglich, sollte Code für eine einfache Verwendung verpackt werden.
- Für mittlere bis große Anwendungen werden Add-Ins für Komplettlösungen bevorzugt
- Sofern Sie sich nicht absolut sicher sind, dass das Add-In universell kompatibel ist, verwenden Sie die Funktionen JMP-Mindestversion und Unterstützte Hosts im Add-In-Assistenten, um zu verhindern, dass das Add-In in nicht unterstützten Umgebungen ausgeführt wird.
- Bei großen Projekten sollten JMP-Anwendungen innerhalb von Add-Ins verwendet werden, um langsame Ladezeiten zu vermeiden.
- Unpaketierte JSL-Skripte sollten für Funktionsbibliotheken, Verarbeitungsskripte, Entwicklungsarbeiten usw. reserviert werden.
- Code (im JSL-, Add-in- oder Anwendungsformular), den der Endbenutzer nicht bearbeiten oder anzeigen können soll, sollte verschlüsselt werden.
- Code, den Benutzer nicht allgemein ausführen können sollten, sollte über eine Verschlüsselung verfügen.
Andere Überlegungen
- Erwägen Sie, dem Code Lizenzierungs- oder Haftungsausschlüsse beizufügen. Sie können von einer Organisation verlangt werden, wenn der Code öffentlich veröffentlicht wird.
Über dieses Dokument
F: Wo sind die Materialien?
A: Sie lesen es.
Es ist derzeit nur intern verfügbar. Dies wird sich ändern.
F: Was ist unsere Motivation?
A: Um das folgende Kundenproblem anzugehen, ob real oder vermeintlich:
Meine Skripts funktionieren nicht mit der neuesten Version von JMP.
F: Was hoffen wir zu erreichen?
A: Obwohl wir Fälle, in denen neue Probleme auftreten, nicht kontrollieren können, können wir Anleitungen zur Vermeidung selbstverschuldeter Probleme geben.
F: Wozu dient das Dokument bzw. wofür nicht?
A: Das vorliegende Dokument soll einen allgemeinen Überblick über bewährte Programmierpraktiken geben. Es ist beschreibend und nicht präskriptiv. Letzteres kommt wahrscheinlich später.
F: Was brauchen wir von Ihnen?
A: Bitte teilen Sie uns mit:
- Wenn im Dokument etwas fehlt oder unklar ist.
- Was Ihrer Meinung nach als nächstes passieren sollte.
- Wo Sie dies glauben, und zukünftige Informationen leben sollten.
- Was Sie von uns benötigen, um Ihre Kunden mit Skripten auf die neueste Version umzustellen.