局部变量:编程实践



给定以下方法:

public int methodOne() {
    int total = local_int_one + local_int_two;
    return total;
}
public int methodTwo() {
    return local_int_one + local_int_two;
}

1)上述方法的唯一区别是可读性还是在methodTwo()中有微优化的"好处"?

2)在可能的情况下,是否应该避免和避免在狭窄范围内定义局部变量?(如果在一条语句中必须执行多个计算,我可以看到methodTwo变得不可读)

简短的回答是:methodTwo() 稍微更有效率。

methodOne()产生以下字节码:

public int methodOne();
 0  aload_0 [this]
 1  getfield com.example.Test.local_int_one : int [13]
 4  aload_0 [this]
 5  getfield com.example.Test.local_int_two : int [15]
 8  iadd
 9  istore_1 [total]
10  iload_1 [total]
11  ireturn

这是methodTwo()的字节码:

public int methodTwo();
 0  aload_0 [this]
 1  getfield com.example.Test.local_int_one : int [13]
 4  aload_0 [this]
 5  getfield com.example.Test.local_int_two : int [15]
 8  iadd
 9  ireturn
但是请注意,这个优化太小了,在这种情况下代码的可读性比几个java指令重要得多。

如果您认为临时变量将有助于代码的可读性,那么,无论如何,使用它。

最新更新