2

Java変数を宣言するとき
できるだけ狭いスコープを使用することをお勧めする理由そのよう

その推奨

if (x>3) {
double d = someCalculation();
// ......
System.out.println("...");
} else {
// No use of d
System.out.println("...");
}

推奨されません

double d = someCalculation();
if (x>3) {          
// ......
System.out.println("...");
} else {
// No use of d
System.out.println("...");
}
4

6 に答える 6

4

プログラムが正しいことを読み、維持し、実証するのが簡単です。

とにかく、この答えはそれをうまくカバーしています。

また、「変数スコープの制限」(サンプルヒット)を検索してみてください

于 2013-03-05T16:03:55.887 に答える
4

スコープが実行されると、スコープ内で宣言されたすべての変数がガベージ コレクションの対象となるため、不要になった場合はそれらの変数を保持する必要があります。

if(...) {...}あなたの場合、ブロックが実行されるとすぐdにGCの対象になります

于 2013-03-05T16:05:18.297 に答える
1

変数を宣言すると、これが作成され、メモリ内のスペースが予約されるためです。この変数を使用しなくても、スペースが作成されます。必要な場合にのみ変数を宣言します。

于 2013-03-05T16:04:49.810 に答える
0

必要なスコープは必ず宣言する必要がありますが、不要な場合は無関係な変数である可能性があります。これに対する答えは、質問にあります。なぜ、関係のない場所に物を置いたままにするのでしょうか。あなたは一般的にそうしません、私は願っています-少なくともあなたが10代の頃からではありません。

その日の床にあるすべての服を考えてみてください。どれがきれいでどれが汚れているかを知っているお母さんは誰もいません。彼女はそれらをすべて洗うのですか、それともすべて残すのですか、それとも何ですか?つまり、そのようなテクノロジーのメモリ管理です。何が使われているの?何を動かすことができますか?何を処分できますか?等

このような場合にクリーンなスコープなどを維持することには、これが自然なことである以外にも、多くの利点があります。スコープ内のコードの一部は、場合によっては「作業単位」と見なすことができ、変数(名前+タイプ)が再利用される場合は、データの競合から保護することもできます。

于 2013-03-05T16:03:44.520 に答える
0

まったく同じ理由で、この回答を得るために、電話番号、電子メールアドレス、出身国の市民権 ID 番号を stackoverflow プロファイルに投稿しないでください。混乱を防ぎ、読みやすさを改善し、潜在的な混乱を減らすために、最も最小限の露出で変数を管理します。

于 2013-03-05T16:06:55.813 に答える
-1

また、あなたの例では、必要かどうかにかかわらず someCalculation() を実行します。あまり効率的ではありません。

于 2013-03-05T16:05:21.303 に答える