Answers:
假设你有
boolean active;
访问器方法将是
public boolean isActive(){return this.active;}
public void setActive(boolean active){this.active = active;}
也可以看看
hasCustomName
字段,现在我应该为它的getter和setter方法命名吗?是setHasCustomName[setter]
和hasCustomName[getter]
好吗?
public boolean isCustomerName(){return this.customerName;} public void setCustomerName(boolean customerName){this.customerName= customerName;}
http://geosoft.no/development/javastyle.html#Specific
is
前缀应用于布尔变量和方法。
isSet
,isVisible
,isFinished
,isFound
,isOpen
这是布尔方法和变量使用的命名约定 Sun用于Java核心软件包的。 使用is前缀解决了选择错误的布尔名称(例如status或flag)的常见问题。isStatus或isFlag根本不合适,程序员不得不选择更有意义的名称。
布尔变量的设置方法必须具有如下设置的前缀:
void setFound(boolean isFound);
在某些情况下,可以使用is前缀替代一些前缀。这些是具有,可以并且应该前缀:
boolean hasLicense(); boolean canEvaluate(); boolean shouldAbort = false;
hasData
,则setter的外观如何?最肯定的是,setData(bool hasData)
我看上去很不对劲……
boolean isIsCurrent(){...}
否则将用于反序列化对象的框架抱怨了getter not found for property isCurrent
。
对于名为的字段isCurrent
,正确的getter / setter命名为setCurrent()
/isCurrent()
(至少是Eclipse所认为的),这非常令人困惑,可以追溯到主要问题:
不应首先调用您的字段isCurrent
。 Is是动词,动词不适合表示对象的状态。改用形容词,突然您的getter / setter名称会更有意义:
private boolean current;
public boolean isCurrent(){
return current;
}
public void setCurrent(final boolean current){
this.current = current;
}
get
检索时前缀Boolean
VS is
了boolean
我相信它将是:
void setCurrent(boolean current)
boolean isCurrent()
也许是时候开始修改这个答案了吗?就我个人而言,我会投赞成票setActive()
和unsetActive()
(根据上下文,替代方案可以是setUnActive()
,,等等),因为“ setActive”意味着您始终都在激活它,而您并不需要。说“ setActive”有点反直觉,但实际上删除了活动状态。notActive()
disable()
另一个问题是,您不能以CQRS方式专门监听SetActive事件,您需要监听“ setActiveEvent”,并确定监听器内部是否实际设置为活动状态。或当然确定在呼叫时要呼叫哪个事件,setActive()
但那会违反关注分离原则。
对此的不错的阅读是Martin Fowler的FlagArgument文章:http ://martinfowler.com/bliki/FlagArgument.html
但是,我来自PHP背景,并且看到这种趋势越来越多地被采用。不确定Java开发对这有多大作用。
private boolean current;
public void setCurrent(boolean current){
this.current=current;
}
public boolean hasCurrent(){
return this.current;
}
has
用于BO或经过某种处理的此类服务用于POJO时is
。并请添加一些有关您的答案的描述。
作为二传手,如何:
// setter
public void beCurrent(boolean X) {
this.isCurrent = X;
}
要么
// setter
public void makeCurrent(boolean X) {
this.isCurrent = X;
}
我不确定这些命名是否对以英语为母语的人有意义。