我正在研究一个5000多个班级的项目,然后我在每个班级都看到了这个:
private static int foo = 1;
private static void setfoo(int value)
{
foo = value;
}
private static int getfoo()
{
return foo;
}
所以,我认为为什么不使用全局变量并设置它,如果它是静态的。
全局方法和变量之间存在资源使用差异吗?
谢谢你。
答案 0 :(得分:2)
如果您希望将来添加验证(或添加日志记录,或进行访问统计或...),则Getter和Setter非常有用。
答案 1 :(得分:0)
如果getter / setter存在,请始终使用它们。 getFoo
和setFoo
有效地定义名为“Foo”的属性,这是在概念上与您的变量foo
不同。 foo
只是保存该属性当前值的变量,可以视为属于该属性。
请记住,一个属性不必只是获取/设置其支持变量。它还可以在设置之前验证您传入的值。它可以同步对变量的访问。和/或将来,setter可能会改变其他东西的特性,并且getter可以返回其他东西的当前状态,甚至不需要支持变量。通过直接设置变量,可以在将来更改属性的情况下创建兼容性问题。
但是,如果您知道setFoo
确实(并且,在不久的将来,仍会这样做)除了设置名为foo
的变量之外什么都没有,那么它实际上是不更好地拥有一个getter / setter。它们不是更清洁,更可读,而且它们当然不会更有效率;所有方面都a = 3; doStuffWith(a);
击败setA(3); doStuffWith(getA());
。他们的缺席使你无法获得属性的概念包袱,你只需要一个变量。只在需要时添加getter / setter(或肯定需要很快)属性可以提供的特殊行为。 但是一旦你添加了它们,就到处使用它们。
答案 2 :(得分:0)
字段和getter以及setter都是私有的和静态的。这意味着它们的预期目的仅在类中使用。因此,如果您在所有类可访问的位置(全局可访问)创建它,那么另外一个公共类也必须跟踪该字段,因为在使用之前必须将它初始化为某个值(在大多数情况下, 1我觉得)。此外,你必须使这个代码互相排斥,以保持它一直正确(如果调用5000次真的会让它变慢)..接听你的电话......一切都由你决定..