let*_*nje 88 java methods naming-conventions
我喜欢在其他语言的方法/函数名称末尾使用问号.Java不允许我这样做.作为一种解决方法,我如何在Java中命名布尔返回方法?使用is
,has
,should
,can
在方法的前声好一些情况.有没有更好的方法来命名这样的方法?
例如createFreshSnapshot?
jjn*_*guy 111
惯例是在名称中提出问题.
以下是一些可以在JDK中找到的示例:
isEmpty()
hasChildren()
Run Code Online (Sandbox Code Playgroud)
这样,读取的名称就像他们最后会有一个问号一样.
集合是空的吗?
这个节点有孩子吗?
然后,true
意味着是,并且false
意味着没有.
或者,您可以像断言一样阅读它:
收集是空的.
该节点有孩子
注意:
有时您可能想要命名一个类似的方法createFreshSnapshot?
.如果没有问号,名称意味着该方法应该创建快照,而不是检查是否需要.
在这种情况下,您应该重新考虑您实际要求的内容.类似的东西isSnapshotExpired
是一个更好的名字,并传达了方法在调用时会告诉你的内容.遵循这样的模式也可以帮助您保持更多的功能纯净,没有副作用.
如果你做一个谷歌搜索的isEmpty()
Java API中,你会得到很多结果.
Jas*_*n S 29
如果您希望您的类与Java Beans规范兼容,那么使用反射的工具(例如JavaBuilders,JGoodies Binding)可以识别布尔getter,使用getXXXX()
或isXXXX()
作为方法名称.来自Java Beans规范:
8.3.2布尔属性
另外,对于布尔属性,我们允许getter方法匹配模式:
public boolean is
< PropertyName >()
;可以提供此"is < PropertyName >"方法而不是"get < PropertyName >"方法,或者除了"get < PropertyName >"方法之外还可以提供它.在任何一种情况下,如果布尔属性存在"is < PropertyName >"方法,那么我们将使用"is < PropertyName >"方法来读取属性值.布尔属性的示例可能是:
Run Code Online (Sandbox Code Playgroud)public boolean isMarsupial(); public void setMarsupial(boolean m);
kom*_*mer 24
我想发布这个链接,因为它可能有助于进一步窥视检查这个答案,并寻找更多的Java风格约定
第14项是特别相关的,暗示的前缀.
风格指南继续建议:
is前缀有一些替代方案,在某些情况下更适合.这些都是有,可以和应该前缀:
boolean hasLicense();
boolean canEvaluate();
boolean shouldAbort = false;
Run Code Online (Sandbox Code Playgroud)
如果您遵循指南,我相信适当的方法将被命名为:
shouldCreateFreshSnapshot()
Run Code Online (Sandbox Code Playgroud)
cod*_*nix 12
对于可能失败的方法,即你将boolean指定为返回类型,我会使用前缀try
:
if (tryCreateFreshSnapshot())
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
对于所有其他情况使用前缀,如is..
has..
was..
can..
allows..
..