【问题标题】:Java Advantages of Converting Global Variables to Local Variables in MethodsJava在方法中将全局变量转换为局部变量的优点
【发布时间】:2011-07-23 17:11:07
【问题描述】:

我正在开发基于股票启动器的 android 启动器。我只是感兴趣为什么在方法中有很多全局变量转换为局部变量,例如

final VelocityTracker velocityTracker = mVelocityTracker;
velocityTracker.computeCurrentVelocity(1000);

而不仅仅是

mVelocityTracker.computeCurrentVelocity(1000);

它是一些 android 的东西还是一般的 java 规则?当可以直接访问时分配一个新的VelocityTracker 是没有意义的。

编辑 是的,这段代码被重复了很多次。

【问题讨论】:

  • 这可能是一个奇怪的优化,看我的回答here。请注意,我没有使用 Android 的经验。

标签: java variables global-variables


【解决方案1】:

如果您多次使用某个字段,这会很有用。一些 JVM 和我认为 Android 虚拟机不能有效地优化对字段的访问。

但是它可能会被过度使用,如果只访问一次,我看不到重点。

访问易失性字段也很有用。这可以确保当您多次使用该字段时,您正在获取相同的对象。例如

volatile String text;

String text = this.text;
if(text != null)
    doSomething(text);

如果您没有使用局部变量 text 对于 if 语句可能是非 null 并且对于 doSomething() 可能是 null

【讨论】:

    【解决方案2】:

    您是对的,在您的简短示例中,此作业没有任何意义。但一般来说,尽量减少变量的范围是一个很好的做法。这使您可以专注于处理特定变量的特定代码。

    【讨论】:

    • 当字段与变量一样可访问时,将字段分配给局部变量有何用处?这如何“最小化变量的范围”?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多