Java:如何命名布尔属性
我只是在Webapp上有一个惊喜,我在.jsp页面中使用EL。
我添加了一个布尔属性并挠了一下头,因为我已将布尔名称命名为“ isDynamic”,因此可以这样写:
<c:if test="${page.isDynamic}"> ...
</c:if>
我发现比以下内容更容易阅读:
<c:if test="${page.dynamic}"> ...
</c:if>
但是.jsp编译失败,并显示以下错误:
javax.el.PropertyNotFoundException: Property 'isDynamic' not found on type com...
我发现我的IDE(花了一些时间才注意到它),在生成getter时,已经生成了一个名为:
isDynamic()
代替:
getIsDynamic()
有一次,我手动更换 isDynamic() 由 getIsDynamic() 一切工作正常。
所以我这里确实有两个问题:
以“ is”开头的布尔属性名称是否不好?
无论它是好是坏,IntelliJ都没有通过自动生成名为 isDynamic 而不是 getIsDynamic 的方法来 犯错 吗?
回答:
敏感的话题,但 我认为 这是不好的。变量名称不应表示问题,而应表示语句。例如
pageIsDynamic
,dynamical
或dynamicallyGenerated
。但是,对此没有明确的编码约定。只要您在整个编码过程中保持一致,那么任何一种方式都不会造成太大的伤害。不,不是。该JavaBean规范规定,允许其前缀布尔getter方法的名称与
is
为好。通常在上面是首选get
。与其他所有不错的IDE一样,IntellIJ也遵守此规范。Eclipse和Netbeans会做同样的事情。以下是第8.3.2章的摘录:
8.3.2布尔属性
此外,对于布尔属性,我们允许使用getter方法来匹配模式:
public boolean is<PropertyName>();
“is<PropertyName>”
可以提供该方法代替“get<PropertyName>”
方法,或者可以在“get<PropertyName>”
方法之外提供该方法。无论哪种情况,如果
“is<PropertyName>”
为布尔属性提供该“is<PropertyName>”
方法,那么我们将使用该方法来读取属性值。布尔属性的示例可能是:public boolean isMarsupial();
public void setMarsupial(boolean m);
以上是 Java:如何命名布尔属性 的全部内容, 来源链接: utcz.com/qa/433834.html