这是一个我一直在考虑的设计问题,却没有找到令人信服的信息。
假设我的类中有一些实例变量,现在想象我想为我的类编写一些私有功能,使用该值。写这样的东西不是问题:
public class Example{
private String attribute1;
public void setAttribute1(String att){
this.attribute1 = att;
}
private void processAttribute(){
//do something with attribute1
}
public void executeExample(){
processAttribute();
}
}
processAttribute()
内部使用attribute1
值的位置。但是,许多医生说我们应该尝试限制全局变量的使用。写这样的东西会是一种更可重复且设计良好的方式吗?
public class Example{
private String attribute1;
public void setAttribute1(String att){
this.attribute1 = att;
}
private void processAttribute(String att){
//do something with attribute1
}
public void executeExample(){
processAttribute(this.attribute1);
}
}
汇集您的想法。
答案 0 :(得分:2)
许多针对全球国家的论点也适用于此:
另一方面,这是一种私人方法,只要你履行了课程的合同,你就可以自由地实施它。
答案 1 :(得分:1)
首先,attribute1不是全局属性,它只是一个类变量。类变量将在所有类方法中使用,使用此操作,因此您无需将它们作为方法参数传递。
由于不需要在此处传递方法参数,因此实现它似乎不合逻辑。顺便说一下,这是我个人的观点,其他人可能会有不同的想法。
答案 2 :(得分:1)
然而,许多医生说我们应该尝试限制全球的使用 变量
我认为你误解了这个概念。通常全局变量是声明为public static
的变量,因此可以直接从应用程序的任何其他部分访问它。
因此,在您的两个示例中,变量attribute1不是全局变量。它只是该类的成员变量。
因此,我认为两种不同的代码之间没有太大区别。
如果设计是固定的,那么我认为最好使用第一个设计使其更具可读性。如果将来有其他机会将其他变量作为参数而不是成员变量发送,那么您可以使用第二个实现。 (虽然我认为这完全取决于编码人员的个人选择)