class 中变量范围的最佳实践是什么

What is the best practice for the scope of variables in a class

我的老师源码公开了,看到这个我一头雾水:

从静态变量实例化的新局部变量,然后在一个方法中使用该变量并作为参数传递给另一个方法,然后将其新值设置为副本所基于的同一个静态变量。由于静态变量的范围在整个 class 中都可以访问,为什么不直接从 class 中的每个方法访问静态变量?

为什么这样做:

public class Calculator {

    private JTextField displayText;

    public void actionPerformed(ActionEvent e) {

        String input = displayText.getText();    

        if (something == right) {
            for (int i = 0; i < 10; i++) {
                enterNumber(input);    
            }
        }
    }

    public void enterNumber(String input) {  

        displayText.setText(input); 
    }
}

如果你可以:

public class Calculator {

    private JTextField displayText;

    public void actionPerformed(ActionEvent e) {

        if (something == right) {
            for (int i = 0; i < 10; i++) {
                enterNumber();
            }
        }
    }

    public void enterNumber() {

        String localVar = "Kitten";
        displayText.setText(localVar);
    }
}

在这个确切的例子中你是对的,在你的输入数字方法中有一个参数是没有意义的。

但是当你开始处理更复杂的程序时,你会开始注意到你最终会一遍又一遍地使用相同的功能,在这些功能中你可以有一个带参数的方法,这样你就可以执行相同的操作略有变化。

如果你有一个带参数的方法,其他人也更容易阅读,因为你所要做的就是说 "ok i call the method and send it blank, it sets the value to whatever i sent it.",而不是说 "ok i call the method, now lets see what the method does."

如果您的代码有效,那么它就不是糟糕的代码。但如果它有效并且易于阅读,那么它就是很好的代码。