web-dev-qa-db-ja.com

JavaScriptのすべての大文字の定数。そして必要なもの。そして輸入

私はすべて大文字で定数値を宣言するのに慣れていました。次に、決して変更されない値にconstを使用し始めました。突然、ほとんどのものが定数になります。それは大丈夫です。

しかし、コードは非常に異なって見え始めます。

それはすでに話しました: https://softwareengineering.stackexchange.com/questions/278652/how-much-should-i-be-using-let-vs-const-in-es6

私は「先に進み、constすべてのもの!」で大丈夫です。私は推測する。私のコードの周りにはすべて大文字がたくさんあります。

しかし、もっとあります。

このロジックによって必要なものは定数でなければなりませんか?私は必須を再割り当てしたことはありません。あ、はい?

const GULP = require('gulp');
const ESLINT = require('gulp-eslint');

また、インポートは再割り当てできないため、次のようにする必要があります。

import SOMETHING from 'modules/something';

正しい?

参考文献を探しています。定数に関するベストプラクティス。これを私が今までよりも長く、よりよく考えた人。

または、私は任意のオプションを選択し、それ以降一貫している必要がありますか?

少なくともこれらすべての点を考慮して、自分の考えを整理するのに役立つ議論を見つけることができませんでした。まだ。

16
slacktracer

他の言語が定数に大文字を使用しているからといって、それがJavaScriptに自動的に適用されることを意味するとは思いません。

私が考えることができる唯一の引数for大文字は、再割り当てできるものとできないものを視覚的に区別することです。とは言っても、eslintのようなツールでは、次のようなことをすると警告を出すことができます。

  • constで宣言された変数を再割り当てしようとしています(つまり、代わりにletを使用してください)。
  • letを使用して変数を宣言し、それを再割り当てしない(つまり、代わりにconstを使用する)。

この規則の1つの例外は、数学定数、または外部で構成するのに意味がない他のハードコードされた値の定義です-たとえば、DECAY_RATE、またはそのような性質。

8
Jim O'Brien

一般的に言えば、定数を大文字にすることは一般的な方法です。これは、値が固定されていることを他のプログラマーに知らせる規則です。 JavaScriptキーワードconstは、その意味では混乱を招くことはありません。私はあなたが混乱したところだと思います。定数は概念/構成です。言語内のプリミティブ型ではありません。 constを使用して定数を示すことができますが(そうする必要があります)、すべてのconstが定数であるとは限りません:-)基本的に、定数は変数であり、プログラム中に値を変更できない実行。 JavaScriptのconst変数は、それを変更することができますが、再割り当てすることはできません。値の再割り当てと値の変更は、2つの異なるものです。

_const foo = [1];
// allowed
foo.pop()
Push(2);

// not allowed
foo = [];
_

基本的にそれは多かれ少なかれプログラマにやや浅い不変の型を与えるために追加されました。 constを使用するのは、割り当てエラーをキャッチする場合に使用するのが最も安全なタイプの変数であり、letのようにブロックスコープであるためです。また、constよりもletを使用した方がパフォーマンスが少し向上します。

const gulp = require('gulp');のようなものですが、ここでのconstの使用は完璧ですが、定数ではありません。これは、常に変化する値を持つ関数への参照です。

だから、慣習を守ってください。たとえば、ある種類のhtml5ビデオプレーヤーを作成して、異なる再生速度を提供する場合などです。

_defaultPlaybackSpeed = 1; // Nothing wrong with this
doubleSpeedMultiplier = 2; // Nothing wrong with this
DEFAULT_PLAYBACK_SPEED = 1; // This though tells others this value is fixed
DOUBLE_SPEED_MULTIPLIER = 2; // Same here
_
7
Dwayne

面白い。私は本を​​読んでいました あなたはJSを知りません:Up&Going そしてそれを見ました:

慣例により、定数としてのJavaScript変数は通常、大文字で、アンダースコア_が複数の単語の間にあります。

次に、もう少し調べてみたところ、 [〜#〜] mdn [〜#〜] のように、他の開発者サイトでは大文字を使用することを推奨していることがわかりました。

// NOTE: Constants can be declared with uppercase or lowercase, but a common
// convention is to use all-uppercase letters.

// define MY_FAV as a constant and give it the value 7
const MY_FAV = 7;

それ以外にも、単語間に_を使用するのは慣習だと彼らが言っていることにも気づきました。

これは一部の言語では一般的な慣行であると読みましたが、このように記述されたコードを使用したJavaScriptプロジェクトには気づきませんでした。それとは別に、JSがcamelCaseであると誰かが言っているのをいつも目にしているので、少し混乱します。とにかく、私はそれが初めてです。

重要なのは、自分や自分のコードで作業する可能性のある人にとって良いものをコーディングすることです。プロジェクトに一貫性があり、チームがコードを書くのと同じ方法に従っている限り、問題はないと思います。

大文字と_に慣れている場合は、次のようにします。

const GULP = require('gulp');
const ESLINT = require('gulp-eslint');
5
R. Marques