Java:如何命名布尔属性
我只是在Webapp中有一点惊喜,我在.jsp页面中使用EL。
我添加了一个布尔属性并且抓了我的头,因为我已经命名了一个布尔“isDynamic”,所以我可以这样写:
...
我发现哪个更容易阅读:
...
但是.jsp无法编译,错误如下:
javax.el.PropertyNotFoundException: Property 'isDynamic' not found on type com...
我发现我的IDE(我花了一些时间注意它),在生成getter时,生成了一个名为的方法:
isDynamic()
代替:
getIsDynamic()
一旦我通过getIsDynamic()手动替换isDynamic() ,一切都运行正常。
所以我在这里真的有两个问题:
-
使用“is”启动布尔属性的名称是不是很糟糕?
-
不管是不是坏了,IntelliJ在这里通过自动生成名为isDynamic而不是getIsDynamic的方法犯了错误 ?
-
敏感话题,但在我看来这很糟糕。 变量名称不应表示问题,而应表示语句。 例如
pageIsDynamic
,pageIsDynamic
或pageIsDynamic
。 然而,对此没有明确的编码约定。 只要你在整个编码过程中保持一致,无论哪种方式都不会造成太大的伤害。 -
不,它没有。 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中你没有变量名和方法之间的冲突,所以如果isDynamic
为true
,则可以说有一个isDynamic()
方法可以返回。 或者至少这是好的,如果“dinamicity”实际上是对象的真实属性而不仅仅是你需要的布尔值。
例如, verbose
是一个布尔值,通常不是对象的属性,因此使用isVerbose()
方法会是一个坏主意(除非它是一个Console
类)。
有一个名为isDynamic
的布尔值是一个很好的表达思想。 它建议你变量是一个bool
而不需要任何额外的努力。