Java布尔getters“;是";vs";是";

Java布尔getters“;是";vs";是";,java,naming-conventions,boolean,Java,Naming Conventions,Boolean,我知道Java中布尔getter的约定是包含前缀“is” 但是如果主语是复数呢?也就是说,如果我不想知道一家商店是否开门,而是想知道所有的商店是否都开门,那该怎么办 isStoresOpen()在英语中没有意义 我很想写一些有成就感的东西,比如: areStoresOpen areDogsCute areCatsFuzzy 我认为这是有道理的,但其他人告诉我,我应该接受它,放弃主谓一致,使用isStoresOpen,isDogsCute,isCatsFuzzy 无论如何,对于操作复数主语的布尔

我知道Java中布尔getter的约定是包含前缀“is”

但是如果主语是复数呢?也就是说,如果我不想知道一家商店是否开门,而是想知道所有的商店是否都开门,那该怎么办

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;