首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >公有还是私有,Android变量真的很重要吗

公有还是私有,Android变量真的很重要吗
EN

Stack Overflow用户
提问于 2012-09-20 02:44:16
回答 3查看 15.1K关注 0票数 28

在单个活动中,当定义仅在该活动中使用的组件时,以下定义之间的真正区别是什么:

代码语言:javascript
复制
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?

EN

回答 3

Stack Overflow用户

发布于 2012-09-20 03:12:16

好吧,重要的一点是,将变量定义为私有是java编程中的标准。因此,直接在对象上调用变量至少对可能阅读您的代码的其他人来说是奇怪的。

我想说的另一件事是,如果你不是一个人,在项目上编码总是一个很好的实践,限制类实现中关键属性的可见性,以避免其他开发人员可能会想出的奇怪工作。

我个人不知道这些修饰符是否用于编译和优化目的。

总之,正如我认为每个有经验的java程序员一样,我强烈建议在定义属性时使用这种模式。

票数 4
EN

Stack Overflow用户

发布于 2012-09-20 03:12:14

可见性的范围与垃圾收集器或内存管理无关

您将希望尽可能减少可见性的范围,以便您的代码可以更容易地维护。

票数 2
EN

Stack Overflow用户

发布于 2012-09-20 02:50:35

如果你的变量声明在活动的作用域内,它就会像作用域变量一样正常工作。

然而,在不是参数的情况下,在另一个方法中使用来自一个方法的变量是一种糟糕的编程实践。

示例:

不好:

代码语言:javascript
复制
void Foo()
{
    int foo = 5;
    System.out.println(Bar());
}

int Bar()
{
    return foo + 5;
}

这实际上会抛出语法错误,因为在Bar()的作用域之外声明了foo

好:

代码语言:javascript
复制
int foo;

void Foo()
{
    foo = 5;
    System.out.println(Bar(foo)); //prints 10
}

int Bar(int foo)
{
    return foo + 5;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12500913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档