我一直在想一个设计问题,却没有找到令人信服的信息。
假设我的类中有一些实例变量,现在想象我想使用该值为我的类编写一些私有功能。编写这样的东西不是问题:
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);
}
}
汇集您的想法。
最佳答案
许多反对全球国家的论点在这里也适用:
如果在processAttribute方法之外的其他地方使用该属性,则很难推断出程序的正确性
很难并行化使用全局状态的代码:如果在处理属性时修改了属性,应该怎么办?
更多:http://c2.com/cgi/wiki?GlobalVariablesAreBad
另一方面,它是一个私有方法,您可以自由地实现它,但是只要您满足该类的合同,就可以随意执行。