如果一个类包含一个名为“blah”的变量,则标准的getter/setter语法显然是getBlah()和setBlah()。但是,如果我有一个带有名为isBlah的变量的POJO类,我会使用:

public type getIsBlah() {
  return isBlah;
}

public setIsBlah(type isBlah) {
  this.isBlah = isBlah;
}

还是这个?
public type isBlah() {
  return isBlah;
}

public setBlah(type blah) {
  this.isBlah = blah;
}

第一种似乎更严格地遵循POJO约定,但是第二种类型是IntelliJ生成的,如果我要求它使一个类的getter/setter(并且,IntelliJ从来没有让我失望过::))。那么哪个是首选语法?

最佳答案

使用属性的原因之一是将API与实现分离。换句话说,您不应受到私有(private)变量的束缚。除了试图使代码维护者可读之外,这不应给命名起任何作用。

我会说,如果在这种情况下“类型”是boolean,则第二种形式是正确的。如果不是boolean,则应使用getXXX-但我可能不会使用getIsXXX。对我而言,“is”与 boolean 属性具有非常强的对应性,并且在其他上下文中使用它不仅会破坏JavaBeans约定(这可能会影响其他工具),而且还会误导IMO。

07-26 00:30