0

その定数がその関数の実行にのみ関連している場合、関数内で定数を宣言することに本質的に問題はありますか?

これを行う代わりに、簡単な例として:

 private const PROGRESS_BAR_MAX_VALUE:Number = 110;

 private function checkProgress():void
 {
     if(progress >= PROGRESS_BAR_MAX_VALUE)
        {
            do.something();
        }
    }

私はこれを書きます:

private function checkProgress():void
{
    const MAX_VALUE:Number = 110;

    if(progress >= MAX_VALUE)
    {
        do.something();
    }
}
4

2 に答える 2

3

関数内で定数を宣言しない 2 つの理由:

  1. 通常、定数には意味があります。関数外では使わないと思っていても大間違い。正確なテキスト測定とレイアウトを考慮するために絶対に必要な、テキスト コントロール内の愚かな mx_internal パディングを思い出してください。実際には、private 定数を public に変更することは非常に一般的です。同じ責任範囲に別の実装が必要な場合は、同じ定数を使用する可能性があります。クラスが何らかの形でこの値を使用する場合、多くの場合、外部クラスはその動作を予測するためにそれを必要とします。あなたの場合、この値は関数パラメーターに変わる可能性があります。その場合、定数のようではなく、デフォルト値を持つパラメーターとして宣言されます。

  2. 多くの場合、ActionScript は最初に学ぶプログラミング言語ではなく、主に ActionScript を使用しながら、他の言語を使用する必要があります。人々は、関数レベルではなく、クラス レベルで一定であることを期待しています。そのため、ほとんどの人にとって、関数内の定数を見ると混乱します。

さらに、値が実際に定数であることを確認してください。ラベルのテキストである場合、ローカライズを追加する必要がある場合はどうなりますか? 遅延オプションの場合、構成ファイルから読み取る必要がある場合はどうなりますか? 「プログレスバーの最大値」は、定数の対象のようには見えません。

于 2013-08-02T18:06:33.410 に答える
1

いいえ、それはまったく問題ありません。

値が決して変わらない場合はいつでも使用する必要があります。CONSTこれにより、コードの保守が容易になり、メモリも少し節約できると聞いています。

関数のスコープ内でのみ使用される場合は、関数で変数を宣言する必要があります。

したがって、決して変更されず、1 つの関数でのみ使用される変数を作成する場合は、関数で宣言できconst MAX_VALUEます。

于 2013-08-02T17:47:39.020 に答える