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

因为需要它的范围必须声明它,而在不需要的地方它可能是一个不相关的变量。这个问题的答案在于:你为什么要把东西放在与它们无关的地方?我希望你通常不会——至少从你十几岁开始就不会。

想想当年地板上的所有衣服,没有一个妈妈知道哪些是干净的,哪些是脏的。她是把它们都洗干净,还是把它们都扔掉,还是什么?此类技术中的内存管理也是如此。正在使用什么?我可以移动什么?我可以处理什么?等等

在这些情况下保持干净的作用域等有很多好处,除了这只是一件很自然的事情。在某些情况下,范围内的代码片段可以被视为“工作单元”,如果重用变量(名称+类型),它还可以防止数据冲突。

于 2013-03-05T16:03:44.520 回答
0

出于同样的原因,您不会为了得到这个答案而在您的 stackoverflow 个人资料上发布您来自任何国家/地区的电话号码、电子邮件地址和公民身份证号码。您以最简单的方式管理变量,以防止混乱、提高可读性并减少潜在的混乱。

于 2013-03-05T16:06:55.813 回答
-1

同样在您的示例中,无论是否需要,您都将执行 someCalculation() 。效率不是很高。

于 2013-03-05T16:05:21.303 回答