在单个活动中,当定义仅在该活动中使用的组件时,以下定义之间的真正区别是什么:
Button btnPower = null;
//or
private Button btnPower = null;
//or
public Button btnPower = null;
public void somethingUsingTheButton(){
btnPower = (Button)findViewById(R.id.btnpower_id);
}
有没有一些应该考虑的“幕后”约定(垃圾清理、内存等),如果实体本身只在编写它的类中使用,那么应该始终使用private而不是public?
发布于 2012-09-20 03:12:16
好吧,重要的一点是,将变量定义为私有是java编程中的标准。因此,直接在对象上调用变量至少对可能阅读您的代码的其他人来说是奇怪的。
我想说的另一件事是,如果你不是一个人,在项目上编码总是一个很好的实践,限制类实现中关键属性的可见性,以避免其他开发人员可能会想出的奇怪工作。
我个人不知道这些修饰符是否用于编译和优化目的。
总之,正如我认为每个有经验的java程序员一样,我强烈建议在定义属性时使用这种模式。
发布于 2012-09-20 03:12:14
可见性的范围与垃圾收集器或内存管理无关
您将希望尽可能减少可见性的范围,以便您的代码可以更容易地维护。
发布于 2012-09-20 02:50:35
如果你的变量声明在活动的作用域内,它就会像作用域变量一样正常工作。
然而,在不是参数的情况下,在另一个方法中使用来自一个方法的变量是一种糟糕的编程实践。
示例:
不好:
void Foo()
{
int foo = 5;
System.out.println(Bar());
}
int Bar()
{
return foo + 5;
}
这实际上会抛出语法错误,因为在Bar()
的作用域之外声明了foo
好:
int foo;
void Foo()
{
foo = 5;
System.out.println(Bar(foo)); //prints 10
}
int Bar(int foo)
{
return foo + 5;
}
https://stackoverflow.com/questions/12500913
复制相似问题