Java:如何命名布尔属性

我只是在Webapp中有一点惊喜,我在.jsp页面中使用EL。

我添加了一个布尔属性并且抓了我的头,因为我已经命名了一个布尔“isDynamic”,所以我可以这样写:

 ...  

我发现哪个更容易阅读:

  ...  

但是.jsp无法编译,错误如下:

 javax.el.PropertyNotFoundException: Property 'isDynamic' not found on type com... 

我发现我的IDE(我花了一些时间注意它),在生成getter时,生成了一个名为的方法:

 isDynamic() 

代替:

 getIsDynamic() 

一旦我通过getIsDynamic()手动替换isDynamic() ,一切都运行正常。

所以我在这里真的有两个问题:

  1. 使用“is”启动布尔属性的名称是不是很糟糕?

  2. 不管是不是坏了,IntelliJ在这里通过自动生成名为isDynamic而不是getIsDynamic的方法犯了错误

  1. 敏感话题,但在我看来这很糟糕。 变量名称不应表示问题,而应表示语句。 例如pageIsDynamicpageIsDynamicpageIsDynamic 。 然而,对此没有明确的编码约定。 只要你在整个编码过程中保持一致,无论哪种方式都不会造成太大的伤害。

  2. 不,它没有。 Javabean规范声明允许使用is boolean getter方法名称的前缀。 它通常比以上更get 。 与其他所有体面的IDE一样,IntellIJ只是坚持这个规范。 Eclipse和Netbeans也会这样做。 这是第8.3.2章的摘录:

8.3.2布尔属性

另外,对于布尔属性,我们允许getter方法匹配模式:

 public boolean is(); 

可以提供这种“is方法而不是“get方法,或者除了“get方法之外还可以提供它。

在任何一种情况下,如果布尔属性存在“is方法,那么我们将使用“is方法来读取属性值。 示例布尔属性可能是:

 public boolean isMarsupial(); public void setMarsupial(boolean m); 

isDynamic()通常是作为布尔getter的方式。

 public boolean isDynamic() { return dynamic; } 

在您的模板中,您可以使用:

  ...  

将属性命名为“is”更为典型,让访问者拥有“是”。 您当然可以更改IDE生成的内容,并且如果您更清楚,则将“getIsDynamic()”作为访问者。

因为在Java中你没有变量名和方法之间的冲突,所以如果isDynamictrue ,则可以说有一个isDynamic()方法可以返回。 或者至少这是好的,如果“dinamicity”实际上是对象的真实属性而不仅仅是你需要的布尔值。

例如, verbose是一个布尔值,通常不是对象的属性,因此使用isVerbose()方法会是一个坏主意(除非它是一个Console类)。

有一个名为isDynamic的布尔值是一个很好的表达思想。 它建议你变量是一个bool而不需要任何额外的努力。