【问题标题】:Is using get() excessively in Java inefficient?在 Java 中过度使用 get() 是否效率低下?
【发布时间】:2015-07-23 21:54:51
【问题描述】:

我想知道在对象上过度使用 get() 或将 get() 的返回值存储在变量中并使用它是否更有效。例如,这样做会更有效吗:

someObject.setColor(otherObject.getColor().r, otherObject.getColor().g, 
         otherObject.getColor().b);

或将它存储在这样的变量中

Color color = otherObject.getColor();
someObject.setColor(color.r, color.g, color.b);

【问题讨论】:

  • 不管什么是最有效的,我很确定选择效率最低的永远不会成为您编写任何代码的主要瓶颈。
  • 我不知道从性能的角度来看效率,但从可读性(和打字)的角度来看,第二种方法更好

标签: java get set


【解决方案1】:

选项 1:按照示例 1 编写代码。

  • java 运行时可能会也可能不会优化代码(将其变成类似于示例 2 的内容)
  • 更难阅读

选项 2:您按照示例 2 编写代码。

  • 不依赖于 java 运行时的优化
  • 更容易阅读

根据我的经验,运行时差异可以忽略不计(如果不在一个巨大的循环中执行,则无法衡量差异),但编写干净易懂的代码才是最重要的。

【讨论】:

  • 您能解释一下为什么在选项二中它不依赖于 java 运行时的优化吗?
  • @someFolk 选项 1 中可能的优化是对 otherObject.getColor() 的调用只执行一次,并且返回的对象存储在临时变量中。 java 运行时可能会为您执行此操作,或者您可以像选项 2 中那样为您自己显式执行此操作。
【解决方案2】:

在例子#2中

Color color = otherObject.getColor();
someObject.setColor(color.r, color.g, color.b);

您只是在创建对原始对象的引用,因此您没有使用任何可观的“额外”内存。加上它更具可读性,所以 +1 例如#2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-04
    • 1970-01-01
    • 2016-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    相关资源
    最近更新 更多