use*_*949 163 java coding-style naming-conventions javabeans
例如.
boolean isCurrent = false;
Run Code Online (Sandbox Code Playgroud)
你怎么命名它的吸气剂和二传手?
Jig*_*shi 231
假设你有
boolean active;
Run Code Online (Sandbox Code Playgroud)
访问者的方法是
public boolean isActive(){return this.active;}
public void setActive(boolean active){this.active = active;}
Run Code Online (Sandbox Code Playgroud)
也可以看看
Nar*_*yan 79
http://geosoft.no/development/javastyle.html#Specific
is
前缀应该用于布尔变量和方法.
isSet
,isVisible
,isFinished
,isFound
,isOpen
这是Sun用于Java核心包的布尔方法和变量的命名约定 . 使用is前缀解决了选择错误的布尔名称(如status或flag)的常见问题.isStatus或isFlag根本不适合,程序员被迫选择更有意义的名字.
布尔变量的setter方法必须设置前缀,如下所示:
Run Code Online (Sandbox Code Playgroud)void setFound(boolean isFound);
is前缀有一些替代方案,在某些情况下更适合.这些是,可以和应该前缀:
Run Code Online (Sandbox Code Playgroud)boolean hasLicense(); boolean canEvaluate(); boolean shouldAbort = false;
Sea*_*oyd 64
对于一个名为的字段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;
}
Run Code Online (Sandbox Code Playgroud)
数据类型Boolean的setter/getter方法和类中的boolean之间有一个值得注意的点(对于pojo/entity)。
例子:
(a)如果属性定义为布尔值
private Boolean check;
Run Code Online (Sandbox Code Playgroud)
setter/getter 方法
public Boolean getCheck() { // getXXX()
return check;
}
public void setCheck(Boolean check) {
this.check = check;
}
Run Code Online (Sandbox Code Playgroud)
(b)如果属性定义为布尔值
private boolean check;
Run Code Online (Sandbox Code Playgroud)
setter/getter 方法
public boolean isCheck() { // isXXX()
return check;
}
public void setCheck(boolean check) {
this.check = check;
}
Run Code Online (Sandbox Code Playgroud)
我相信它将是:
void setCurrent(boolean current)
boolean isCurrent()
Run Code Online (Sandbox Code Playgroud)
也许是时候开始修改这个答案了吗?就我个人而言,我会投赞成票setActive()
和unsetActive()
(根据上下文,替代方案可以是setUnActive()
,,等等),因为“ setActive”意味着您始终都在激活它,而您并不需要。说“ setActive”有点反直觉,但实际上删除了活动状态。notActive()
disable()
另一个问题是,您不能以CQRS方式专门监听SetActive事件,您需要监听'setActiveEvent'并确定内部的监听器是否实际上被设置为活动状态。或者,当然可以确定在调用时要调用哪个事件,setActive()
但是那违反了关注分离原则。
对此很好的阅读是Martin Fowler的FlagArgument文章:http ://martinfowler.com/bliki/FlagArgument.html
但是,我来自PHP背景,并且越来越多地采用这种趋势。不确定Java开发对这有多大帮助。