我一直在想一个设计问题,却没有找到令人信服的信息。

假设我的类中有一些实例变量,现在想象我想使用该值为我的类编写一些私有功能。编写这样的东西不是问题:

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


另一方面,它是一个私有方法,您可以自由地实现它,但是只要您满足该类的合同,就可以随意执行。

09-25 19:31