在循环内部或外部声明变量

问题:

为什么以下工作正常?

String str;
while (condition) {
    str = calculateStr();
    .....
}

但这一个据说是危险/不正确的:

while (condition) {
    String str = calculateStr();
    .....
}

是否有必要在循环之外声明变量?

回答:

局部变量的范围应尽可能小。

在你的例子中,我假设strwhile循环之外使用not,否则你不会问这个问题,因为在while循环内声明它不是一个选项,因为它不会编译。
因此,由于str在循环外使用not,所以str的最小可能范围是within while循环。
所以答案是emphatically绝对应该在while循环中声明str。没有,不,不,不。
唯一可能违反此规则的情况是,由于某些原因,每个时钟周期必须从代码中挤出是至关重要的,在这种情况下,您可能需要考虑在外部范围中实例化某些内容,并重新使用它在内部范围的每次迭代上重新实例化它。但是,这不适用于您的示例,因为java中的字符串的不变性:一个新的str实例将始终在循环的开头创建,并且必须在其结尾被抛弃,因此不可能优化那里。
 编辑:(在答案中注明我的评论)
在任何情况下,正确的方法是正确地编写所有代码,为您的产品建立性能要求,根据此要求衡量最终产品,如果不满足要求,则进行优化。通常最终发生的是,您只需在几个地方找到方法来提供一些不错而正式的算法优化,这样可以使我们的程序满足其性能要求,而不必在整个代码基础上进行调整和修改。为了在这里和那里挤压时钟周期。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Declaring variables inside or outside of a loop

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

− 5 = 3