Java 为什么在声明变量时建议使用尽可能窄的范围?
当声明Java变量时Java 为什么在声明变量时建议使用尽可能窄的范围?,java,variables,optimization,Java,Variables,Optimization,当声明Java变量时 为什么建议使用尽可能窄的范围 那样 其建议 不建议这样做 因为需要它的范围必须声明,而在不需要它的地方,它可能是一个不相关的变量。这个问题的答案在于:你为什么要把东西放在与它们无关的地方?我希望你一般不会,至少在你十几岁的时候不会 想想那天地板上所有的衣服,没有一个妈妈知道哪个干净,哪个脏。她是把它们都洗了,还是都留下了,还是怎么了?这类技术中的内存管理也是如此。在用什么?我能搬家吗?我能处理什么?等等 在这些情况下,维护干净的作用域等有很多好处,但这只是一件自然的事情。在
为什么建议使用尽可能窄的范围
那样 其建议 不建议这样做
因为需要它的范围必须声明,而在不需要它的地方,它可能是一个不相关的变量。这个问题的答案在于:你为什么要把东西放在与它们无关的地方?我希望你一般不会,至少在你十几岁的时候不会 想想那天地板上所有的衣服,没有一个妈妈知道哪个干净,哪个脏。她是把它们都洗了,还是都留下了,还是怎么了?这类技术中的内存管理也是如此。在用什么?我能搬家吗?我能处理什么?等等
在这些情况下,维护干净的作用域等有很多好处,但这只是一件自然的事情。在某些情况下,作用域中的代码片段可以被视为“工作单元”,如果重复使用变量(名称+类型),它还可以防止数据冲突。更易于阅读、维护和证明程序是正确的 不管怎么说,它覆盖得很好
还可以尝试搜索“limiting variable scope”(),因为在声明变量时,会创建该变量并在内存中保留一个空间。即使不使用此变量,也会创建空间。仅在需要时声明变量。一旦执行了作用域,该作用域内声明的所有变量都可以进行垃圾收集,因此如果不再需要,则需要携带这些变量
在您的例子中,如果(…){…}块被执行,
d
符合GC的条件,那么无论是否需要,您都将执行someCalculation()。效率不高。出于同样的原因,你不在stackoverflow个人资料上公布你的电话号码、电子邮件地址和国籍ID号,不管你来自哪个国家。您以最简单的方式管理变量,以防止混乱,提高可读性,并减少潜在的混乱。一旦执行了一个作用域,该作用域内声明的所有变量都有资格进行垃圾收集。更广泛的作用域使您更接近全局变量及其所有乐趣/陷阱。没有人提到GC so+1。
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("...");
}