前文
JMP Scripting Language (JSL) は、自動コード生成 (マクロ レコーダーに類似) からアプリケーション開発用の統合開発環境まで、さまざまなスクリプト機能を提供します。 他のプログラミング言語と同様に、優れたプログラミング手法を JSL プロジェクトに適用すると、堅牢でサポートしやすいスクリプトとアプリケーションが作成されます。 JSL は一般的なプログラミング タスクを単純化したため、これらのプラクティスの必要性は見落としたり無視したりしがちです。JSL が提供する機能と柔軟性を考えると、優れたプログラミング手法を無視すると、ユーザーが潜在的なリスクにさらされることになります。 この短いドキュメントは、これらのリスクを認識し、それらを管理するために使用できるプログラミング戦略を提供するために書かれています。
一般的なベスト プラクティス
- 常に書面による計画または問題の説明から始め、それを使用して明確な成果物のチェックリストを作成します。これらは、スコープ クリープを防ぎ、プロジェクトのタスクを維持するのに役立ちます。
- 可能であれば、すべてをゼロから設計するのではなく、既存の構造 (関数、既成のコード、ライブラリなど) を使用します。
- 多くの場合、考えられるすべての入力状況をテストすることは不可能ですが、複数の入力条件を使用する必要があります。 JMP のプレリリース バージョンに対するテストも実施する必要があります。 可能であれば、保存された一連のテスト ファイルまたは記述された一連のテスト条件 (ダイアログ ボックスの設定など) を使用する必要があります。
- 元の作成者がコードの維持に責任を負わなくなった場合に、誰がコードの維持に責任を負うかを明示して、後継者計画を作成する必要があります。
スクリプトの構造
- コードを単独で開発する場合でも、グループで開発する場合でも、スタイル ガイドに基づいて作業することをお勧めします。 ガイドには、変数や関数の命名規則、コーディング要素の前後のスペース (つまり、書式設定)、コメントなどの情報が含まれている必要があります。 このドキュメントは、スクリプトとアプリケーション間の一貫性を高め、読みやすさと保守性を高めます。 例へのリンクを見つけることができますここ.
- スクリプトの先頭に、バージョン番号、作成者、改訂日、必須およびオプションの入力、以前のバージョンのバグ修正、およびテスト対象の JMP バージョンなどの情報を含むコメント セクションを含める必要があります。 変更の履歴が保持されるように、スクリプトが変更されるたびに更新する必要があります。 範囲と制限を含むプログラムの動作の簡単な説明も含める必要があります。
- データ構造、制御の流れ、またはロジックの選択がすぐにはわからないコードのセクションには、コメントを追加する必要があります。
- 変数は、最初に定義されたスクリプト/関数/ブロックの外部で定義しないでください。 どうしても必要な場合を除き、グローバル変数は避けるべきです。 これらの制限を実装するには、JSL スコープ機能を使用する必要があります。
- 可能な限り、スクリプトまたはアプリケーションの機能は小さな独立したコード ブロックに分割する必要があります。 そのコードは、別のファイルまたは JSL データ構造に格納される場合があります。
配送方法
- リポジトリ、バージョン管理システムなどを使用してコードのコレクションを管理し、ユーザーがスクリプトの最新バージョンにアクセスできるようにすることを検討してください。
- 可能であれば、使いやすいようにコードをパッケージ化する必要があります。
- 中規模から大規模なアプリケーションの場合、完全なソリューションにはアドインが推奨されます
- アドインが普遍的に互換性があることを完全に確信している場合を除き、アドイン ウィザードの最小 JMP バージョンおよびサポート対象ホスト機能を使用して、アドインがサポートされていない環境で実行されないようにしてください。
- 大規模なプロジェクトの場合、読み込み時間が遅くならないように、アドイン内で JMP アプリケーションを使用する必要があります。
- パッケージ化されていない JSL スクリプトは、関数ライブラリ、スクリプトの処理、開発作業などのために予約する必要があります。
- エンド ユーザーが編集または表示できないコード (JSL、アドイン、またはアプリケーション フォーム内) は暗号化する必要があります。
- ユーザーが普遍的に実行できないコードは、暗号化を実行する必要があります。
その他の考慮事項
- コードにライセンスまたは法的免責事項を含めることを検討してください。 コードが公開されている場合、組織によって要求される場合があります。
このドキュメントについて
Q: 材料はどこにありますか?
A: あなたはそれを読んでいます。
現在、内部でのみ利用可能です。 これは変わります。
Q: 私たちのモチベーションは何ですか?
A: 次のお客様の問題に対処するため (現実のものか認識されているものかに関係なく):
スクリプトが最新バージョンの JMP で動作しません。
Q: 私たちは何を達成したいと考えていますか?
A: 新しい問題が発生するケースを制御することはできませんが、自傷行為を回避するためのガイダンスを提供することはできます。
Q: この文書は何のためのものですか?
A: 現在のドキュメントは、優れたプログラミング プラクティスの概要を示すことを目的としています。 これは説明的であり、規範的ではありません。 後者はおそらく後で来るでしょう。
Q: 私たちはあなたから何を必要としていますか?
A: お知らせください:
- 書類に不足や不明な点がある場合。
- 次に起こるべきだと思うこと。
- あなたがこれを信じるところ、そして将来の情報が生きるべきです。
- スクリプトを使用して顧客を最新バージョンに移行するプロセスを作成するために必要なもの。
スクリプト開発と呼ばれるセクションを追加します。展開方法には、スクリプト開発に含める意味のあるものがいくつかあります (つまり、リポジトリとバージョン管理)。展開方法にリストされているアドインに加えて、他の展開方法 (データ テーブル内、スタンドアロン スクリプト、open 関数で実行、Windows タスク スケジューラを使用して実行、ジャーナル内のスクリプトを使用してワークフローを管理) についても言及できます。 スクリプト開発には、レポート (および JMP 16 のログ!) からスクリプトを保存することや、レポートや New Window() から保存されたスクリプトをつなぎ合わせる方法などのいくつかの基本、Scripting Index、JMP などのリソースが含まれます。コミュニティなど...