为什么建议在声明变量时尽可能使用最窄的范围?

时间:2013-03-05 16:01:16

标签: java variables optimization

声明 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("...");
}

6 个答案:

答案 0 :(得分:4)

更容易阅读,维护和演示程序是正确的。

无论如何,this answer涵盖了它。

还尝试搜索“限制变量范围”(sample hit

答案 1 :(得分:4)

一旦范围执行,范围内声明的所有变量都有资格进行垃圾收集,因此如果不再需要这些变量,则需要携带这些变量。

在您的情况下,只要if(...) {...}阻止执行d,就有资格获得GC

答案 2 :(得分:1)

因为当你声明一个变量时,会创建一个变量并在内存中保留一个空格。即使您不使用此变量,也会创建空间。仅在需要时声明变量。

答案 3 :(得分:0)

因为必须声明它所需的范围,而在不需要的地方,它可能是一个无关的变量。对此的答案在于这样一个问题:为什么你会把事情放在与他们无关的地方?我希望你通常不这样做 - 至少从少年时起就没有。

考虑当天回到地板上的所有衣服,没有人知道哪个是干净的,哪个是脏的。她是全部洗掉,还是全部洗掉,或者是什么?因此,在这些技术中使用内存管理。正在使用什么?我能走动什么?我可以处理什么?等

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

答案 4 :(得分:0)

出于同样的原因,您不会在您的stackoverflow个人资料上发布您的电话号码,电子邮件地址和您所在国家/地区的公民身份证号码,以获得此答案。您可以在最简约的曝光中管理变量,以防止混乱,提高可读性并减少潜在的混淆。

答案 5 :(得分:-1)

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