Setter和Getterfunction。 在Android中。 性能开销?

当我学习Java标准版时,gettersetter函数经常用于隐藏variables并减少对它们的直接访问。 有几个消息来源告诉我,在Android中你不应该使用这些函数,只能直接修改variables。 原因是在Android中使用getter和setter时,由于开销导致性能下降。 导致更多内存使用并减慢系统速度。

有没有道理呢? 如果有,为什么使用getter和setter的性能损失?

    截至此处发现的使用getter和setter的文档在android中是一个坏主意。 正如它所说,

    这对Android来说是一个坏主意。 虚拟方法调用比实例字段查找昂贵得多。 遵循常见的面向对象编程实践并在公共接口中使用getter和setter是合理的,但在类中,您应该始终直接访问字段。

    在此处了解更多关于性能

    根据谷歌android团队提供的性能提示:

    没有JIT,直接字段访问速度比调用一个简单的getter快约3倍。 使用JIT(直接字段访问与访问本地一样便宜),直接字段访问比调用一个简单的getter快约7倍。

    但是我同意一个好的编码实践更重要,团队也提到:

    请注意,如果您使用的是ProGuard,则可以充分利用ProGuard,因为ProGuard可以为您提供内联访问器。

    因此我认为使用getter和setter是可以的;)

    参考

    安装者和吸气剂的性能损失可以忽略不计。 公共领域是不好的做法,违反了面向对象的数据封装和信息隐藏原则。

    使用setter或getter比直接访问字段需要一个属性调用。 这没什么,所以不用担心 – 专注于编写好的代码。

    编辑:

    为了澄清,这是来自其他海报引用的同一个Android文档:

    遵循常见的面向对象编程实践并在公共接口中使用getter和setter是合理的,但在类中,您应该始终直接访问字段。

    换句话说,你仍然需要getter和setter。 您应该尽量避免在拥有这些方法的类中调用它们,因为您可以直接访问该字段。