我正在研究一个项目惠特5000多个类,然后我在每个类中看到这一点:
private static int foo = 1;
private static void setfoo(int value)
{
foo = value;
}
private static int getfoo()
{
return foo;
}
所以,我认为为什么不使用全局变量并在静态的情况下设置它。
全局方法和变量之间存在资源使用差异?
谢谢。
获取器和设置器很有用,如果您要在将来添加验证(或添加日志记录,或进行访问统计信息或...)
如果存在getter/setter,请始终使用它们。 getFoo
和 setFoo
有效定义a 属性 nes n is概念上与您的变量foo
不同。foo
只是保存该属性当前值的变量,可以被视为属于属性。
请记住,属性不必仅获取/设置其支持变量。它还可以在设置之前验证您传递的值。它可以同步对变量的访问。和/或将来,设置者可能会改变其他事物的特征,而Getter可能会返回其他事物的当前状态,甚至不需要衬板变量。通过直接设置变量,您可以在将来更改属性以执行任何操作的情况下创建兼容性问题。
但是,如果您知道setFoo
确实(并且,在不久的将来仍然会这样做)除了设置一个名为foo
的变量,那么实际上最好是不是有一个getter/setter。它们不是更清洁的,或更可读的,而且肯定不会更有效;a = 3; doStuffWith(a);
在所有计数上都击败setA(3); doStuffWith(getA());
。他们的缺席使您摆脱了您只需要变量的物业的概念行李。仅在需要时添加getter/setter(或肯定会很快需要)属性可以提供的特殊行为。但是,一旦添加它们,请在任何地方使用它们。
字段,getter和setter都是私人和静态的。这意味着他们的预期目的仅在类中使用。因此,如果您在某些所有类可访问的地方(全球访问)创建它,那么另一个公共类,您也必须跟踪该领域1我觉得)。另外,您将必须将此代码互斥,以使其始终保持纠正(如果打电话给5000次,它确实会使它变得慢)..接听您的电话..这一切都取决于您..