Java布尔getters“;是";vs";是";
我知道Java中布尔getter的约定是包含前缀“is” 但是如果主语是复数呢?也就是说,如果我不想知道一家商店是否开门,而是想知道所有的商店是否都开门,那该怎么办Java布尔getters“;是";vs";是";,java,naming-conventions,boolean,Java,Naming Conventions,Boolean,我知道Java中布尔getter的约定是包含前缀“is” 但是如果主语是复数呢?也就是说,如果我不想知道一家商店是否开门,而是想知道所有的商店是否都开门,那该怎么办 isStoresOpen()在英语中没有意义 我很想写一些有成就感的东西,比如: areStoresOpen areDogsCute areCatsFuzzy 我认为这是有道理的,但其他人告诉我,我应该接受它,放弃主谓一致,使用isStoresOpen,isDogsCute,isCatsFuzzy 无论如何,对于操作复数主语的布尔
isStoresOpen()
在英语中没有意义
我很想写一些有成就感的东西,比如:
areStoresOpen
areDogsCute
areCatsFuzzy
我认为这是有道理的,但其他人告诉我,我应该接受它,放弃主谓一致,使用isStoresOpen
,isDogsCute
,isCatsFuzzy
无论如何,对于操作复数主语的布尔getter,我应该怎么做 惯例是在getter方法前面加上“is”前缀,而不是变量本身 e、 g 及
isStoresOpen()在英语中没有意义
它在语法上可能没有意义,但它遵循惯例,看起来可读性很强。-
isEnabled()
也可以在Java命名惯例中写成getEnabled()
-遵循命名约定只是一个好习惯,在使用Java Beans时会有所帮助。一般来说,我认为代码应该尽可能容易阅读,这样一个方法几乎可以作为一个段落来阅读(正如干净的代码所支持的那样)。因此,我会尽可能简单地命名发音/阅读的方法,并遵循are
的语法规则。使用现代IDE,无需专门查找get
/is
就可以轻松找到方法
然而,库马尔对豆子提出了一个很好的观点。很多工具只会查找get
/is
。在这种情况下,我可能会考虑采用两种方法。一个用于阅读,另一个用于工具使用。许多工具期望是或获取,并且不可能识别是
尝试重新表述它们,例如getDogsAreFuzzy()
或getstoreareopen()
或类似的东西,以获得更好的兼容性和约定。我记不起这是哪本书的内容,但本质是代码的阅读次数将比编写的次数多得多。为可读性而编写。在面向对象编程中,这应该很少发生,因为Store
或Cat
或您拥有的东西应该是一个单独的类,具有自己的isOpen()
或isFuzzy()
方法。如果你有更高的类型,考虑拆分到你实际使用的原子级别。一般来说,对象在最低级别上不应该是复数。JavaBean规范要求对getter使用get
,除非它是boolean
,否则使用就是<代码>是非标准的,任何需要标准Bean命名的东西都无法识别。在您的问题中,您明确询问了getter。getter返回有关类的一个实例的一些信息。例如,您有一个类存储
。现在,isStoreOpen
对于getter来说是一个非常好的方法名
接下来,您将提到一个方法,该方法检查是否所有商店都已打开。这个方法根本不是getter,因为它不返回关于一个实例的信息,而是所有实例的信息。当然,除非有类存储
。如果是这种情况,您应该重新考虑您的设计,因为Java已经有了存储大量实例的方法,例如数组或集合,所以您不必编写额外的类
如果不是这样的话,那么这个方法名就很好了。另一种选择可能只是allStoresOpen
,不带“is”
TL;DR:如果你处理多个实例,它不是一个getter。如果是的话,你的设计就不好。你编写什么代码,英语或Java?
当我阅读Java代码时,我希望事情是结构化的。以开头的布尔方法是一种很好的结构
return 0;
有足够好的英语和遵循Java标准如何:
isEveryStoreOpen()
或isEachCatCute()
当我对正确的单词有疑问时,我总是喜欢查阅同义词表。老实说,我会说,一定要忘记are*
,坚持is*
。将“”is“
视为变量的含义,如果可能,可以使用更好的名称
我想说的是,isStoresOpen听起来没那么糟糕,但如果听起来对你更合适的话,你可以制作isStoresOpen
但我的总体想法是坚持惯例。它对getter使用“get”,对boolean类型使用“is”。我个人认为使用“是”有时已经有问题了。是的-它在“if”条件下看起来不错,但有时我在编码时只写“get”,然后检查所需变量的下拉列表,开始想知道是什么错了以及为什么找不到它,然后我意识到它以“is”开头。…isStoresOpen()
当您遵循Java命名约定和JavaBeans标准时,它们为boolean和其他类型预定义了前缀,所以您应该遵循JavaBeans命名约定
让我们谈谈你的观点
当你看到英语单词中的storesOpen时,是的,它看起来像复数。
再次深入观察这个词
这里
storesOpen根据英语语法是复数
isStoresOpen的结果不是复数,而是单数,或者根据编程约定,可以说它是标量
结果是布尔值,是真是假
不像你的英语复数陈述真的或假的
不是真的数组或假的数组,也不是真的集合<
private boolean enabled;
public boolean isEnabled() {
return enabled;
}
private boolean storesOpen;
public boolean isStoresOpen() {
return storesOpen;
}
return 0;