Java / C#のような静的言語では、コードに単独で挿入するのではなく、文字列または数値に定数を使用します。ただし、私はJavaScriptでのこの習慣を避ける傾向があります。最近では、私の周りの他の一部のコーダーがJSでこのアプローチを採用しているため、私またはおそらく彼らの推論を固める必要があると判断しました。
JavaScriptには、実際の「const」宣言構文はありません。通常は、大文字のプロパティを変更しないという非公式のポリシーで解決します。しかし、私の意見は通常、それらを完全に回避することです。それらの利点のほとんどはJavaScriptで失われるためです。Javaでは、ミススペル文字列が原因でプログラムを実行しようとしたときにプログラムが失敗します。その時点でプログラムを修正して次に進みます。両方のインスタンスが同じ定数を指している静的チェッカーを使用すると、コンパイル時に見つけることができるので、その問題を排除できます。あなたは常にあなたのスペルの正しさを発見しようとしているようしかし、JavaScriptは単純に、あらゆる場所にその問題を持っています実行時に:
Library = { doThing: function() }
setTimeout(function()
Liberry.doThing()
// No such object: Liberry
}, 0);
これに対する最善の安全策は、通常、「厳密な使用」です。それを好む開発者にとって、宣言されていない変数の問題をより迅速に見つけるためにそれを使用することに問題はありません。しかし、私の意見では、REST APIなどに文字列定数を提供しても、実際には何も保護されていません。もう一つの例:
CompanyAPI.constants.ENROLL_URL = "/rest/enroll";
CompanyAPI.constants.FIRST_NAME = "firstName";
ajax({url: CompanyAPI.constants.ENROLL_URL,
data: CompanyAPI.constants.FIRST_NAME
});
// vs.
ajax({url: "/rest/enroll",
data: "firstName"
});
...あなたは上記を書くつもりでしたが、次にタイプミスをしました。おっと。
ajax({url: CompanyAPI.constants.ENROL_URL,
data: CompanyAPI.constants.FIRS_NAME
});
// vs.
ajax({url: "/rest/enrol",
data: "firsName"
});
定数ベースの場合でもundefinedが提供されますが、「firsName」の方が優れています。そのために、私はこれを静的言語の利点と見なす傾向があり、それを修正するシステムを持っていることを気にしない傾向があります(デバッグに「use strict」を使用し始める可能性がある以外に)。他の何人かの人々は、文字列/整数の恒常性のための彼らの好ましい実践が何であるかを私に言うことができますか?
編集:明確にするために、私の好みは通常、「firstName」のような文字列をトップレベルの定数宣言なしで直接インラインに置くことです-スペルミスのペナルティはどちらの方法でも同じです。REST URLのように長くなる可能性がある文字列は、ファイルの先頭で定義する傾向があります。
FIRST_NAME
特に使用方法が気になったのですが、ユーザーごとに変わらないのですか?
FIRST_NAME
?それはサーバーサイドの何かから来ており、JavaScriptに渡されているように見えます。そして、あなたがJava / C#から来たと言うことと合わせて、これらの変数の.js