在 Java 中,类的方法冗余返回类的修改后的全局字段是否是一种好的做法?



在Java中,类的方法冗余地返回该类的修改后的全局字段是否是一种良好的做法?

注意:我编辑了下面的示例来更正我的代码。

例如:

public class MyClass {
    private String veryImportantString;
    public static void main(String [] args) {
        MyClass myObject = new MyClass();
        myObject.fieldQuestion();
    }
    public void fieldQuestion() {
        veryImportantString = "Hello, StackOverflow";
        String newString = addStringToVeryImportantString(" World!");
        System.out.println(newString);      
    }
    public String addStringToVeryImportantString(String inputStr) {
        this.veryImportantString = veryImportantString + inputStr;
        return veryImportantString;
    }
}

在上面的例子中,addStringToVeryImportantString返回veryImportantString,尽管它作为一个类字段已经被修改,并且对调用方法全局可用。

在下面的示例中,我在不返回字段的情况下执行相同的操作:

public class MyClass {
    private String veryImportantString;
    public static void main(String [] args) {
        MyClass myObject = new MyClass();
        myObject.fieldQuestion();
    }
    public void fieldQuestion() {
        veryImportantString = "Hello, StackOverflow";
        addStringToVeryImportantString(" World!");            
        String newString = veryImportantString;
        System.out.println(newString);
    }
    public void addStringToVeryImportantString(String inputStr) {
        this.veryImportantString = veryImportantString + inputStr;
    }
}

我的问题是:这有关系吗?在编码标准、可读性、效率等方面有什么不同吗。?在某种程度上,永远不返回函数修改过的全局类字段是有意义的,因为这有什么意义?该字段仍然可用。另一方面,为了表明函数的主要目的是修改该字段并返回值,返回字段可能是有意义的。

感谢您的意见。

这是一种常用的编码标准,用于方法对对象(或变量)进行变异或获取有关它的信息,但决不能两者兼而有之。因此,一个有返回的方法第一眼就会被认为没有任何副作用(比如更改veryImportantString)。这不是一条硬性规定,有很多理由打破它,但决不能轻易打破。

其次,第二个片段中的方法签名(带有void返回)只能合理地做一件事;更改veryImportantString。但有了回报,它可以做两件事;更改veryImportantString并返回它,或者根据veryImportantString返回一个单独的字符串。由于无效签名不那么模糊,因此最好使用(除非有特殊原因)

对于您的示例,它并不特别重要。

通常,当您有一个私有数据段和一个公共方法时。将信息发送给与私有数据相关的类实例的用户的唯一方法是从公共方法返回一些信息。请记住,大多数Java程序要复杂得多,并且返回与私有字段(例如javabean)相关的数据的需求要常见得多。

最新更新