对于布尔字段,其getter / setter的命名约定是什么?

时间:2011-03-16 08:26:41

标签: java coding-style naming-conventions javabeans

例如

boolean isCurrent = false;

你对它的吸气剂和制定者有什么名称?

10 个答案:

答案 0 :(得分:209)

假设你有

boolean active;

访问者方法是

public boolean isActive(){return this.active;}

public void setActive(boolean active){this.active = active;}

另见

答案 1 :(得分:73)

http://geosoft.no/development/javastyle.html#Specific

  
      
  1. is 前缀应该用于布尔变量和方法。

         

    isSetisVisibleisFinishedisFoundisOpen

  2.         

    这是命名约定   布尔方法和变量使用的    Sun for Java核心软件包。使用is前缀解决了一个常见问题   选择错误的布尔名称的问题   喜欢身份或旗帜。 isStatus或   isFlag根本不适合,而且   程序员被迫选择更多   有意义的名字

         

    布尔变量的Setter方法   必须设置前缀,如:

    void setFound(boolean isFound);
    
         

    有一些替代方案   在某些情况下更适合的前缀   的情况。这些是,可以和   应该是前缀:

    boolean hasLicense(); 
    boolean canEvaluate(); 
    boolean shouldAbort = false;
    

答案 2 :(得分:57)

对于名为isCurrent的字段,正确的getter / setter命名是setCurrent() / isCurrent()(至少是Eclipse认为的那样),这非常令人困惑,可以追溯到主要问题:

您的字段不应该首先调用isCurrent 是动词,动词不适合表示对象的状态。使用形容词,突然间你的getter / setter名称会更有意义:

private boolean current;

public boolean isCurrent(){
    return current;
}

public void setCurrent(final boolean current){
    this.current = current;
}

答案 3 :(得分:5)

believe会:

void setCurrent(boolean current)
boolean isCurrent()

答案 4 :(得分:4)

也许是时候开始修改这个答案了吗?就个人而言,我会投票支持setActive()unsetActive()(替代方案可以是setUnActive()notActive()disable()等等,具体取决于具体情况)因为" setActive& #34;暗示你一直激活它,你不会这样做。对于" setActive"来说,这是一种反直觉的反击。但实际上删除了活动状态。

另一个问题是,你无法以CQRS的方式专门听SetActive事件,你需要听一个' setActiveEvent'并确定内部听众,实际上是否设置了活动。或者当然,在调用setActive()时确定要调用哪个事件,但这违反了“关注点分离”原则。

关于这方面的一个很好的解读是Martin Fowler撰写的FlagArgument文章:http://martinfowler.com/bliki/FlagArgument.html

但是,我来自PHP背景,看到这种趋势被越来越多地采用。不确定Java开发有多少。

答案 5 :(得分:0)

private boolean current;

public void setCurrent(boolean current){
    this.current=current;
}

public boolean hasCurrent(){
    return this.current;
}

答案 6 :(得分:0)

作为二传手,怎么样:

// setter
public void beCurrent(boolean X) {
    this.isCurrent = X;
}

// setter
public void makeCurrent(boolean X) {
    this.isCurrent = X;
}

我不确定这些命名是否对讲英语的人有意义。

答案 7 :(得分:0)

与其他所有getter一样,它应该只是get {varname}。将其更改为“ is”并不会阻止坏的变量名,只会使另一个不必要的规则。

考虑程序生成的代码或反射派生。

这是一个无用的约定,应该在第一个可用的机会上将其删除。

答案 8 :(得分:-4)

Setter: public void setCurrent(boolean val)
Getter: public boolean getCurrent()

对于布尔值,你也可以使用

public boolean isCurrent()

答案 9 :(得分:-7)

只是为了避免混淆;我建议使用

// Setter method for isCurrent

public void setIsCurrent(boolean isCurrent) {
    this.isCurrent = isCurrent;
}

// Getter method for isCurrent

public boolean getIsCurrent() {
    return isCurrent;
}