返回布尔值的java方法的命名约定(无问号)
我喜欢在其他语言的方法/函数名称末尾使用问号。 Java不会让我这样做。 作为一个解决办法,我怎样才能在java中命名布尔返回方法? 在某些情况下,使用方法声音的“是”,“有”,“应该”,“可以”可以。 有没有更好的方法来命名这种方法?
例如createFreshSnapshot?
约定是以名字问一个问题。
isEmpty() hasChildren()
那样的话,名字就像他们在最后会有一个问号一样被读取。
collections是空的吗?
这个节点有小孩吗?
那么, true
意味着是的, false
意味着没有。
或者,你可以把它看作一个断言:
该集合是空的。
节点有孩子
注意:
有时你可能想要命名一个类似createFreshSnapshot?
的方法createFreshSnapshot?
。 没有问号,这个名字就意味着该方法应该创build一个快照,而不是检查是否需要。
在这种情况下,你应该重新思考你实际上在问什么。 像isSnapshotExpired
这样的isSnapshotExpired
是一个好得多的名字,并传达了方法在调用时会告诉你什么。
如果您在Java API中对isEmpty()
进行Googlesearch ,则会得到很多结果。
如果您希望您的类与Java Beans规范兼容,那么使用reflection的工具(例如JavaBuilders , JGoodies Binding )可以识别布尔型的getter,可以使用getXXXX()
或isXXXX()
作为方法名称。 从Java Bean规范:
8.3.2布尔属性
另外,对于布尔属性,我们允许getter方法匹配模式:
public boolean is
< PropertyName >()
;可以提供这个“< PropertyName >”方法,而不是“get < PropertyName >”方法,或者可以提供除“get < PropertyName >”方法之外的方法。 在任何一种情况下,如果“< PropertyName >”方法存在于布尔属性中,那么我们将使用“is < PropertyName >”方法读取属性值。 一个布尔属性的例子可能是:
public boolean isMarsupial(); public void setMarsupial(boolean m);
我想发布这个链接,因为它可能会帮助进一步窥视这个答案,并寻找更多的Java风格约定
Java编程风格指南
第14项是特别相关的,并build议使用前缀。
风格指南继续build议:
在某些情况下,有一些替代方法可以适用于更好的前缀。 这些是有 , 可以和应该前缀:
boolean hasLicense(); boolean canEvaluate(); boolean shouldAbort = false;
如果你遵循指南,我相信适当的方法将被命名为:
shouldCreateFreshSnapshot()
对于可能失败的方法,那就是将boolean指定为返回types,我将使用前缀try
:
if (tryCreateFreshSnapshot()) { // ... }
对于所有其他情况下,使用前缀如is..
has..
was..
can..
allows..
..
标准是使用“是”或“有”作为前缀。 例如isValid
, hasChildren
。
is
我遇到的比其他任何人都多。 不pipe在目前情况下是否合理,都是最好的select。