プライベート定数を使用する場合
-
03-07-2019 - |
質問
次の状況でプライベート定数を使用するのは正しいですか:
lives変数とstartingLives変数を持つゲームがあるとします。ゲームの開始時に、lives変数をstartingLives変数と等しくなるように設定しました。これは私が通常行う方法です:
private var lives:int = 0;
private var startingLives:int = 3;
private function startGame():void
{
lives = startingLives;
}
(サンプルコードはActionScript btwです)
私の質問は-これが本当にあるべきか
private var lives:int = 0;
private const STARTING_LIVES:int = 3;
private function startGame():void
{
lives = STARTING_LIVES;
}
StartingLivesは実行時に変更されそうにないので、constを使用し、変数が一定でないことが判明した場合は変数に戻す必要がありますか?
更新:これは定数の適切な使用であるというコンセンサスのようですが、設定ファイルから値をロードしたいというamdfanの提案はどうですか?
解決
DEFAULT_STARTING_LIVES
という名前の定数に入れますが、startingLivesという名前の変数もあります。今のところ、startingLives = DEFAULT_STARTING_LIVES
に設定します。後で、構成ファイルの値に基づいてstartingLivesを設定できます。ファイルが作成されていないか、見つからない場合は、バックアップがあります。
(元の回答の拡張についてPlinthに感謝します。)
他のヒント
ええ、これはconstの良い使い方です。一般的な経験則として、「変数」は実行時に値が変化しないものは定数にする必要があります。これにより、コンパイラーは、メモリーの別の(ROM)領域に値を配置することにより、これらの値を最適化できます。 (注:これはコンパイラが最適化することを保証するものではなく、単に可能にします。)
プライベート定数は、そのコンテキスト以外で使用できない場合に適切であり、公開すると混乱を招くと考えられます。
定数を確実に使用することは、特に複数の場所で使用する必要がある場合、マジックナンバーよりも優れています。