【问题标题】:Is using a function to return a variable from a class more efficient than referencing the variable directly? [duplicate]使用函数从类中返回变量是否比直接引用变量更有效? [复制]
【发布时间】:2012-03-30 09:49:32
【问题描述】:

可能重复:
Java: Are Getters and Setters evil?

我有一个名为 Block 的类,其中包含一个名为 inUse 的简单布尔值。例如,在程序的其他地方的 if 语句中,最好使用一个名为 inUse() 的方法,该方法返回 inUse 布尔值,或者只使用 block.inUse 引用变量

例如

if(block.inUse == true) // do something

或者我应该使用

if(block.inUse()) //do something

inUse() 将是块类中的简单返回方法

boolean inUse() {
   return inUse }

谢谢

【问题讨论】:

标签: java


【解决方案1】:

取决于你的 jre,它是 JIT 实现。许多 JIT 编译器最终会内联简单的 getter 和 setter,一旦它们被足够频繁地调用。

我个人从来不是通过方法引用成员变量的人。我意识到这是个人喜好问题,但我的总体感觉是对象不需要调用方法来获取(或设置)它自己的内部变量。

【讨论】:

    【解决方案2】:

    鉴于 Java 通常是用字节码解释器实现的,这个级别的效率问题通常是没有意义的,因为解释器带来的开销成本会在没有盐或烧烤酱的情况下把你活活吃掉。

    与授予对实例变量的访问权限相比,使用方法的优势在于它允许程序员控制对实例变量的修改。

    【讨论】:

      【解决方案3】:

      直接使用该值无疑是更有效的执行方式。但是使用方法是最好的选择。这就是 OO 和 Java 的全部内容,封装变量。

      【讨论】:

      • 实际上,OO(以及早在它之前的信息隐藏)是关于隐藏可能在不更改接口的情况下更改的实现细节。阅读 Parnas 的“在将系统分解为模块时使用的标准”,在(例如)sunnyday.mit.edu/16.355/parnas-criteria.html
      猜你喜欢
      • 1970-01-01
      • 2017-04-14
      • 1970-01-01
      • 1970-01-01
      • 2020-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-24
      相关资源
      最近更新 更多