例如
boolean isCurrent = false;
你对它的吸气剂和制定者有什么名称?
答案 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
- 醇>
is
前缀应该用于布尔变量和方法。
isSet
,isVisible
,isFinished
,isFound
,isOpen
这是命名约定 布尔方法和变量使用的 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;
}