スクリプティングの一般的なガイドライン
JavaScript に似た言語を使用して効率的なスクリプトを記述します。命名、変数、およびテーブルアクセスに関する次の一般的なガイドラインに従います。
このガイドでは、JavaScript のような言語を使用して CPQ で効率的で信頼性の高いスクリプトを作成するための一般的なガイドラインについて説明します。これらのガイドラインに従うことで、保守可能で読みやすく、パフォーマンスの高いコードを作成することができます。
クイックサマリー
- 宣言を一番上に配置する
- 慎重にコメントしてください
- 角括弧をインデント
- 説明的な変数名を使用
- 変数に一貫した名前を付ける
- 「新規」は避けてください
- 緩い等価性 (「==」) を回避する
- 「let」の前に「const」を使用し、「var」より「let」を使用します
- テーブルルックアップを最小限に抑える
宣言を一番上に配置する
変数と関数の宣言をスクリプトの先頭に配置すると、読みやすくなり、予期しない変数ホイストの問題を防ぐことができます。
1 // Declare and initiate at the beginning
2 let firstName = "";
3 let lastName = "";
4 let price = 0;
5 let discount = 0;
6 let fullPrice = 0,
7 const myArray = [];
8 const myMap= {};
慎重にコメントしてください
コメントを使用して、コード内の複雑なロジック、仮定、または自明でない動作を説明します。単にコードを繰り返すだけの冗長なコメントは避けてください。
角括弧をインデント
1 // Good
2 if (condition) {
3 // ...
4 if (nestedCondition) {
5 // ...
6 }
7 }
8
9 // Bad
10 if (condition) {
11 // ...
12 if (nestedCondition) {
13 // ...
14 }
15 }説明的な変数名を使用
意味があり、変数または関数の目的を説明する名前を選択してください。これにより、コードが自己文書化され、他の人が理解しやすくなります。
1 //Good
2 let quoteId = cfgRequest.partner.quote.id.value;
3 let lineID = cfgRequest.partner.quote.lineId.value;
4 let currencyISO = cfgRequest.partner.quote.currencyIsoCode.value;
5 let priceBookID = cfgRequest.partner.quote.pricebookId.value;
6
7 if (quoteId != null) {
8 cfgRequest.quoteIDTest.set("value", quoteId);
9 }
10
11 if (lineID != null) {
12 cfgRequest.lineIDTest.set("value", lineID);
13 }
14
15 if (currencyISO != null) {
16 cfgRequest.currencyISOCodeTest.set("value", currencyISO);
17 }
18
19 if (priceBookID != null) {
20 cfgRequest.pricebookIDTest.set("value", priceBookID);
21 }
22
23 //Bad
24 let x1= cfgRequest.partner.quote.id.value;
25 let x2= cfgRequest.partner.quote.lineId.value;
26 let x3= cfgRequest.partner.quote.currencyIsoCode.value;
27 let x4= cfgRequest.partner.quote.pricebookId.value;
28
29 if (x1 != null) {
30 cfgRequest.quoteIDTest.set("value", x1);
31 }
32
33 if (x2 != null) {
34 cfgRequest.lineIDTest.set("value", x2);
35 }
36
37 if (x3 != null) {
38 cfgRequest.currencyISOCodeTest.set("value", x3);
39 }
40
41 if (x4 != null) {
42 cfgRequest.pricebookIDTest.set("value", x4);
43 }
変数に一貫した名前を付ける
一貫した命名規則により、コードの読みやすさと保守性が向上します。キャメルケースまたはsnake_caseのいずれかを選択して、そのままにしてください。ロジックフィールド変数名ではキャメルケースを使用するため、ほとんどの組織では読みやすさのためにこの規則が使われています。
1 // camelCase
2 let firstName = "JohnDoe";
3
4 // snake_case
5 let last_name = "Smith";
「新規」キーワードは避けてください
new キーワードを使用すると、より多くのリソースが使用され、メモリリークが発生し、意図しない動作が発生する可能性があります。代わりに、可能であれば、オブジェクトの作成にリテラル表記を使用します。
new String( )の代わりに「 」を使用しますnew Number( )の代わりに( )を使用しますnew Boolean( )の代わりにfalseを使用しますnew Map( )の代わりに{ }を使用してくださいnew Array( )の代わりに[ ]を使用してください
緩い等価性 (「==」) を回避する
緩い等価演算子は、予期しない型強制につながる可能性があります。正確な比較を行うには、厳密な等価演算子 (===) を使用します。
1 // Good
2 if (count === 5) {
3 // ...
4 }
5
6 // Bad
7 if (count == "5") {
8 // ...
9 }
「let」の前に「const」を使用し、「var」より「let」を使用します
スコープと変更可能性の要件に基づいて変数宣言を選択します。再アサインされない変数には const を使用し、変更される変数には let を使用します。 var も受け入れられますが、以前のバージョンの JavaScript からの名残です。
1 // Using const for unchanging values
2 const TAX_RATE = 0.15;
3
4 // Using let for mutable values
5 let itemCount = 5;
テーブルルックアップを最小限に抑える
テーブルクエリが多すぎると、パフォーマンスに影響を与える可能性があります。必要なデータを一度取得して変数に格納することで、クエリを最小限に抑えます。
ルックアップ関数を使用するための一般的なガイドラインについては、「テーブルクエリの最小化」を参照してください。