变量在哪里定义?

Eug*_*neP 1 java

假设,我有一个参数Object类型的方法.该方法什么都不返回 - void.

首先,它检查参数是否为空(或任何其他检查,如objectParam.isEnabled())

if (objectParam.isEnabled()) {
    // ok
}
Run Code Online (Sandbox Code Playgroud)

现在,如果满足条件,我需要局部变量.如果不是,那么我不需要任何变量.

我应该在哪里定义它们?在"if scope"里面或者在方法标题之后?

当然,我可以在任何我喜欢的地方做到,但哪种方式应该是更好的做法?

Jon*_*eet 13

我认为最好的做法是尽可能晚地声明一个变量,在最紧密嵌套的范围内,理想情况下,它可以用一个有用的值进行初始化.

这样可以更清楚地使用它的位置和方式 - 当你查看使用它的代码时,你不必查看很远就能看到声明.

在这个特殊情况下,我不同意官方的Java风格指南 - Josh Bloch也是如此.从Effective Java,第2版,第45项:

用于最小化局部变量范围的最强大的技术是将其声明为首次使用的位置.

因此,如果您在执行其他一些语句之前不需要变量,那么在此之前不要声明它.

  • 没有运行时惩罚?有趣.所以你的意思是这样编程更好:<pre> while(rs.hasNext()){String name = rs.getString("name"); String surname = rs.getString("surn"); //对那些本地变量做一些事情// ...}而不是那样:</ pre> <pre>字符串名称,姓氏; while(rs.hasNext()){name = rs.getString("name"); surname = rs.getString("surn"); //对那些本地变量做什么// ...} </ pre>? (2认同)