Java布尔getters“是”vs“是”

我知道Java的布尔getters约定包含前缀“is”。

isEnabled isStoreOpen 

但是如果主题是复数呢? 也就是说,如果不想知道某家商店是否开放,我想知道所有商店是否开放?

isStoresOpen()在英语中没有意义。

我很想写下getters:

 areStoresOpen areDogsCute areCatsFuzzy 

而且我认为这是有道理的,但是我被其他人告知,我应该把它吸起来,放弃主题动词协议,并使用isStoresOpenisDogsCuteisCatsFuzzy

无论如何,我应该怎样做一个复杂的主题布尔getters?

我不记得这是从哪里来的,但其实质是代码将会被读取的次数比写入的次数多。 写可读性。

如何拥有足够的英语和遵循Java标准:

isEveryStoreOpen()isEachCatCute()

如果对正确的词有疑问,我总是喜欢打开词库。

惯例是在getter-method前加“is”而不是variables本身。

例如

 private boolean enabled; public boolean isEnabled() { return enabled; } 

 private boolean storesOpen; public boolean isStoresOpen() { return storesOpen; } 

isStoresOpen()在英语中没有意义。

这在语法上可能没有意义,但是遵循了惯例,看起来足够可读。

许多工具期望is或者不可能认识到are

尝试改写它们,如getDogsAreFuzzy()getStoresAreOpen()或类似的东西,以获得更好的兼容性和约定。

Java Bean规范说,使用get getter,除非它是一个boolean然后使用。 是非标准的,不会被任何需要标准Bean命名的东西所认可。

Java naming conventions isEnabled()也可以写成getEnabled()

遵守命名规则只是一个好习惯,当你使用Java Beans时候会有所帮助。

一般来说,我认为代码应该尽可能易读,这样一个方法几乎可以作为一个段落来阅读(如Clean Code所说)。 因此,我会尽可能地简单地将读法命名为/读法,并遵循语法的规则。 使用现代的IDE,很容易find方法,而不需要专门查找get / is

然而,库马尔关于豆类很好。 很多工具只会查找get / is 。 在这种情况下,我可能会考虑有两种方法。 一个便于阅读,一个用于工具使用。

你在写什么语言: 英文Java

当我正在阅读Java代码时,我期望事情在那里,让我search这两个getter, is前缀,比search一个前缀更复杂。

但是另一方面呢,早上我看报纸的时候,我什么也没有找,所以你可以用更传统的英文写法。

返回0;

在面向对象的编程中,这个应该很less发生,因为Store或者Cat或者你应该是一个独立的类,有自己的isOpen()或者isFuzzy()方法。 如果你有更高的types,考虑分解到更实际的primefaces级别。 一般来说,对象不应该是最底层的复数。

在你的问题中,你明确地询问了获得者。 getter返回关于你的类的一个实例的一些信息。 例如,你有一个类Store 。 现在, isStoreOpen是一个非常好的getter方法名称。

接下来,你提到一个方法,检查所有商店是否打开。 这个方法根本不是一个getter,因为它不会返回关于一个实例的信息。 当然,除非有一个类Stores 。 如果是这样的话,你应该重新考虑你的devise,因为Java已经有方法来存储一些实例,比如数组或集合,所以你不必编写额外的类。

如果不是这种情况,那么这个方法的名字是完全正确的。 一个替代可能只是所有的allStoresOpen没有“是”。

TL; DR:如果你正在处理多个实例,那不是一个getter。 如果是这样,你的devise是不好的。

坦率地说,我会说绝对忘记的are*和坚持is* 。 如果可能的话,把"is"作为variables的意思,并作一个更好的名字。

我会说isStoresOpen听起来不是那么糟糕,但是如果这听起来对你更好,你可以让isStoresAreOpen。

但是我的总体思路是坚持公约。 getter使用“get”,布尔types使用“is”。 我个人认为使用“是”有时已经成问题了。 是的 – 它在“if”条件下看起来不错,但是有时我只是在编码时写下“get”,并检查我需要的variables的下拉列表,并开始想知道什么是错的,为什么我找不到它,然后我意识到从“是”开始…

isStoresOpen()在这个StoresOpen中似乎是一个复数,

遵循Java命名约定和Java Bean标准时,它们具有布尔型和其他types的预定义前缀,因此应遵循Java Beans命名约定。

让我们来看看你看到的商店是否像英国的未来一样,是的,它看起来像复数。 再次深入观察这个词,

这里

商店根据英文语法打开复数,

isStoresOpen的输出不是复数,而是单数,或者你可以说它是编程约定的标量。

它出来是布尔,只是真或假

不像你的英文复数陈述

不是一个的数组,或不是一个的集合

所以,在这里我们可以这样说,在这里我们关心的是从那个布尔bean方法返回的值,而不是给予类的属性指向真实世界实体的名称。

更重要的是,只要在类中使用这样的布尔属性,并且在任何框架中使用预定义的库,则使用前缀“ is ”的框架来检索布尔值,

为什么这意味着它比你更聪明,比如你知道复数/单数,复用器等英语语法…