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…”单独放在一个方法中吗那么,我是不是因为说这是一个糟糕的实践而被否决了,或者回答OP问的问题,尽管我认为这是一个糟糕的做法??< <强> > /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;
}