スクリプトのどこに定数を定義すればよいですか?


8

PowershellやJavaScriptなどの最新のスクリプト言語を使用してスクリプトを作成する場合、定数をどこに定義すればよいですか?可読性と使いやすさのためにすべての定数をグローバルにする必要がありますか、または定数をスコープにできるだけ近く定義することは理にかなっていますか(関数で、たとえば、他で必要ない場合)。私は主にエラーメッセージ、エラーID、リソースへのパス、または構成オプションについて考えています。

回答:


12

constsは、マジックナンバーの問題を回避するために説明的な変数名を付けるだけで良いですが、constが使用から離れて定義されている場合、実際に使用されている値を識別できないという同様に厄介な問題を引き起こします。

私の提案、すべての言語で:実際の使用にできるだけ近い範囲でconstを定義します。1つのクラスでのみ使用される場合。そのクラスに入れるだけです。複数のクラスは、それを使用するすべてのクラスと少なくとも同じ名前空間にあることを意味します。

JavaScriptでは、これは、すべての使用法と同じように、語彙的にスコープが近いことを意味します。


they cause a similarly annoying problem of not being able to identify the value actually being usedIDEに「定義に移動」したり、他の変数として値をプレビューしたりすることはできませんか?メタデータは、私が想定しているスクリプトでは難しいです。
StuperUser

1
通常、IDEを使用してシェルスクリプトを作成していません。そして、1つが動的な性質であっても、よりシャープなスタイルの「Go to Definition」ツールには向いていません。
ワイアットバーネット

1
@StuperUser私はVS StuperUserになりました。現在12年間続いているので、利用可能なツールを使用することに全力を注いでいますが、設計のより良いアプローチは、ツールなしでコードをどのように維持できるかを考えることです。これにより、より少ないツールで言語間で有用な概念を設計し、通常、ツールの有用性に影響を与えません。ツールは時々悪いデザインを維持しやすくすることがあります。そのため、ツールへの依存はしばしばパンニングされます。
ジミーHoffa

similarly annoying problem of not being able to identify the value actually being used頻繁にチェックする必要はありませんGRAVITATIONAL_ACCELERATION。9.88065です。定数が設定されたら、値を抽象化して、その名前で考える必要があります。
TulainsCórdova2012

1

定数を使用する代わりに、構成ファイルを使用できます。JavaScriptを使用すると、json形式のファイルを簡単に解析できます。PowerShellについては知りません。

構成ファイルには一元化できるという利点がありますが、関数のスコープ内のプロパティの名前(それを取得するとき)を使用すると、読みやすさを維持できます。


時にはそれはやり過ぎかもしれません。特に、値がコードの内部でのみ使用され、ユーザーには表示されない場合。アプリを簡単にセットアップできるように、構成ファイルを最小限に抑えることを好みます。
David Hogue、2012年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.