对于布尔型字段,getter / setter的命名约定是什么?
例如。
boolean isCurrent = false;
你怎么称呼它的吸气和二传手?
假设你有
boolean active;
访问者的方法将是
public boolean isActive(){return this.active;} public void setActive(boolean active){this.active = active;}
也可以看看
- Java编程/ Java Bean
- Java编程语言的代码约定
http://geosoft.no/development/javastyle.html#Specific
是前缀应该用于布尔variables和方法。
isSet,isVisible,isFinished,isFound,isOpen
这是Sun为Java核心软件包使用的布尔方法和variables的命名约定。 使用is前缀解决了select诸如状态或标志的错误布尔名称的常见问题。 isStatus或isFlag根本不适合,程序员被迫select更有意义的名字。
布尔variables的setter方法必须具有set前缀,如下所示:
void setFound(boolean isFound); 在某些情况下,有一些替代方法可以适用于更好的前缀。 这些是有,可以和应该前缀:
boolean hasLicense(); boolean canEvaluate(); boolean shouldAbort = false;
对于名为isCurrent
的字段,正确的getter / setter命名是setCurrent()
/ isCurrent()
(至less这是Eclipse认为的),这是非常混乱的,可以追溯到主要问题:
你的领域不应该被称为isCurrent
首先。 是一个动词和动词是不适合代表一个对象的状态。 用一个形容词来代替,突然你的getter / setter名字会更有意义:
private boolean current; public boolean isCurrent(){ return current; } public void setCurrent(final boolean current){ this.current = current; }
我相信这将是:
void setCurrent(boolean current) boolean isCurrent()
也许现在是时候开始修改这个答案了? 就我个人而言,我会投票支持setActive()
和unsetActive()
(取决于上下文,可以selectsetUnActive()
, notActive()
, disable()
等),因为“setActive”意味着你一直激活它,吨。 说“setActive”,但实际上删除活动状态是一种直觉。
另一个问题是,你不能以CQRS的方式来特别的听SetActive事件,你需要听一个'setActiveEvent'并且确定在这个听者的内部是否被实际设置为活动的。 当然也可以在调用setActive()
时确定要调用哪个事件,但是这违背了分离关注原则。
关于这个的一个很好的阅读是Martin Fowler的FlagArgument文章: http ://martinfowler.com/bliki/FlagArgument.html
不过,我来自PHP背景,看到这个趋势越来越被采用。 不知道这与Java的发展有多less。
Setter: public void setCurrent(boolean val) Getter: public boolean getCurrent()
对于布尔类,你也可以使用
public boolean isCurrent()
只是为了避免混淆; 我推荐使用
// Setter method for isCurrent public void setIsCurrent(boolean isCurrent) { this.isCurrent = isCurrent; } // Getter method for isCurrent public boolean getIsCurrent() { return isCurrent; }