Java 将get和set方法组合到一个方法中是否是一种不好的做法

Java 将get和set方法组合到一个方法中是否是一种不好的做法,java,design-patterns,netbeans,setter,getter,Java,Design Patterns,Netbeans,Setter,Getter,这是我的演讲者课程: public class Speaker { private boolean isConnected; Speaker() { } //the method to change connection status and return it // it's setting and getting the state at the same time public boolean changeConnectionStatus(b

这是我的演讲者课程:

public class Speaker {
    private boolean isConnected;
    Speaker() {
    }
    //the method to change connection status and return it
    // it's setting and getting the state at the same time
    public boolean changeConnectionStatus(boolean isConnected) {
        this.isConnected = isConnected;
        return isConnected;
    }
    public static void main(String[] arg) {
        Speaker jamPlus = new Speaker();
        boolean connectionStatus = jamPlus.changeConnectionStatus(true);
    }
}
起初我认为把它们结合起来是个好主意,但我确信这不是一个合适的惯例 这也把我带离了话题,转到了一个不同的惯例问题上。什么
我应该在main方法中插入什么类型的代码?我是%95肯定的我应该把“boolean connectionStatus=etc…”单独放在一个方法中吗 > /P> 就我个人而言,我见过的唯一一款主要的应用程序就是jQuery。我从未见过有人在.NET中这样做……我猜这在Java中也很少见

这有点主观,所以你可能会因为问一些没有明确答案的问题而被否决……但最佳实践通常是将get(返回值)与set(void或chain)方法分开。任何类似于上述内容的内容都会使用法混乱。如果我键入一个方法changeConnectionStatus,我只希望更改它,而不是获取值。我会寻找一个getIsConnected方法来读取值…在找不到它的情况下,我会参考您的文档,只是为了弄清楚您对这两种方法都使用了相同的方法…如果我必须参考您的文档来获取像这样简单的东西…看起来像是一种代码味道

所以,我想避免它…但是,再一次,主观的…jQuery确实做到了,很多人喜欢jQuery…主要的关键是一致性。不要将其称为changeConnectionStatus,因为“change”一词听起来不像是在获取数据……请将其称为isConnected()……因此:


那么,我是不是因为说这是一个糟糕的实践而被否决了,或者回答OP问的问题,尽管我认为这是一个糟糕的做法??< <强> > /P> 就我个人而言,我见过的唯一一款主要的应用程序就是jQuery。我从未见过有人在.NET中这样做……我猜这在Java中也很少见

这有点主观,所以你可能会因为问一些没有明确答案的问题而被否决……但最佳实践通常是将get(返回值)与set(void或chain)方法分开。任何类似于上述内容的内容都会使用法混乱。如果我键入一个方法changeConnectionStatus,我只希望更改它,而不是获取值。我会寻找一个getIsConnected方法来读取值…在找不到它的情况下,我会参考您的文档,只是为了弄清楚您对这两种方法都使用了相同的方法…如果我必须参考您的文档来获取像这样简单的东西…看起来像是一种代码味道

所以,我想避免它…但是,再一次,主观的…jQuery确实做到了,很多人喜欢jQuery…主要的关键是一致性。不要将其称为changeConnectionStatus,因为“change”一词听起来不像是在获取数据……请将其称为isConnected()……因此:

这不是一个好的做法(根本不是)。 如果只想获取值(假设字段是私有的),您会怎么做? 你必须传递一个参数,这样你就有50%的机会得到错误的答案。

这不是一个好做法(根本不是)。 如果只想获取值(假设字段是私有的),您会怎么做?
你必须传递一个参数,这样你就有50%的机会得到错误的答案。

这不起作用。如果您有一个设置“属性”的
set
方法,那么您希望:

  • 要设置的属性/字段
  • 要抛出的异常
  • 在第一种情况下,只需返回与正在设置的值相同的值。这个值您已经知道了。在第二种情况下:如果抛出异常,原始值将保持不变

    除了
    get
    方法外,还可以使用
    set
    方法返回值。在使用方法链接的情况下,这可能是有意义的。这当然对
    布尔值
    返回值没有什么价值


    您必须始终编写一个
    get
    方法(示例中未显示),否则您将没有
    get
    函数,因为检索字段值的唯一方法是调用
    set
    ,该函数已经修改了值。实际上是一种量子场,每次你试图读取它时,你都会改变它的值。

    这不起作用。如果您有一个设置“属性”的
    set
    方法,那么您希望:

  • 要设置的属性/字段
  • 要抛出的异常
  • 在第一种情况下,只需返回与正在设置的值相同的值。这个值您已经知道了。在第二种情况下:如果抛出异常,原始值将保持不变

    除了
    get
    方法外,还可以使用
    set
    方法返回值。在使用方法链接的情况下,这可能是有意义的。这当然对
    布尔值
    返回值没有什么价值


    您必须始终编写一个
    get
    方法(示例中未显示),否则您将没有
    get
    函数,因为检索字段值的唯一方法是调用
    set
    ,该函数已经修改了值。实际上是一种量子场,每次你试图读取它时,你都会改变它的值。

    通常不是惯例:getter和setter是标准

    然而,您可以做的是重载方法:如果没有传递参数,则获取,如果传递参数,则设置。虽然,我不认为这有什么意义


    或者,第二个参数可以是另一个布尔值或int,如果为true/1,则为getter,如果为false/0,则为setter。

    通常不是约定:getter和setter是规范

    然而,您可以做的是重载方法:如果没有传递param,则获取,如果传递param,则获取
    public boolean isConnected(boolean isConnected)
    {
        this.isConnected = isConnected;
        return this.isConnected;
    }
    public boolean isConnected()
    {
        return this.isConnected;
    }