我应该走多远才能避免在课堂上避免使用内部的getter / setter

时间:2011-02-18 21:52:47

标签: methods field getter members

我有更多的“多少是太多”的问题。我有一个Java类,它定义了几个外部类(大约30个)使用的getter / setter。但是,Java类本身也需要在某些情况下使用这些变量。

我理解在类中使用成员字段而不是getter方法的概念,但在这种情况下,getter执行一个函数(取消屏蔽一个特定的整数)来创建要返回的值。

所以从性能和内存减少的角度来看,对于需要这些值的类中的少数调用,我很好奇我是否应该...

一个。只需拨打getter

即可 湾除了我需要整个班级的值,就像取消吸气器

一样,取消屏蔽 C。创建变量来保存这些值,通过在启动时调用所有getter来加载它们,并在类中使用它们(30个左右的整数可能不是一个严重的内存风险,但我还需要添加到我的代码中来保存这些如果用户设置新值,则更新...因为值已更新并被屏蔽)。

任何想法都表示赞赏!

3 个答案:

答案 0 :(得分:5)

:一种。只需打电话给吸气剂。

从性能和内存减少的角度来看,不断重复使用相同的功能对此几乎没有影响。这就是代码重用的全部内容。

从高级执行/绩效视图,我们做这样的事情:

code: myGetter()
program : push the program state (very few cycles)
program : jump to mygetter (1 clock cycle)
program : execute mygetter (don't know your code but probably very few cycles)
program : save the result ( 1 clock cycle)
program : pop the program state ( very few cycles )
program : continue to next line of code ( 1 clock cycle)

在表演中,黄金法则是花时间优化真正有所作为的东西。出于所有一般目的,磁盘I / O占用了大部分时间和资源。

希望这有帮助!

答案 1 :(得分:2)

a)调用getter - 正如你所指出的那样,你的情况是正确而干净的。

b)和c)过早优化并且很可能弊大于利(除非你真的知道这个特定的位置会成为你代码中的热点而你的JIT编译器将无法优化它你)。

如果您确实在某些时候遇到了性能问题,请分析应用程序并手动优化热点。

答案 2 :(得分:1)

Don't Repeat Yourself是这里的指导原则。尝试通过在整个类中重复相同的取消屏蔽代码来保存函数调用是一种灾难。我只是在课堂上叫getter。