我知道布尔属性的常规约定是对属性本身使用形容词,并使用"是"对于getter和" set"对于二传手。
示例:
private final BooleanProperty edible;
private final BooleanProperty edibleProperty()
{
return this.edible;
}
private final boolean isEdible()
{
return this.edibleProperty().get();
}
private final void setEdible(final boolean value)
{
this.edibleProperty().set(value);
}
现在我有一个属性是否存在。我脑子里自然而然地想到的名字是#34; hasSomething"。然而,吸气者" isHasSomething"没有意义。在这种情况下,为我的财产命名的正确方法是什么?
为了更清楚,我举一个例子:
private final BooleanProperty hasAdminRight;
private final BooleanProperty hasAdminRightProperty()
{
return this.hasAdminRight;
}
private final boolean isHasAdminRight()
{
return this.hasAdminRightProperty().get();
}
private final void setHasAdminRight(final boolean value)
{
this.hasAdminRightProperty().set(value);
}
上面的代码运行得很好。但是,请注意,吸气剂isHasAdminRight
听起来很奇怪(除非我是这里唯一一个认为它很奇怪的人)。当然,将其更改为get
也可以(运行),但getHasAdminRight
也有些奇怪。
我是否可以采用任何命名约定.*AdminRight.*
,这听起来是正确的?或者,此处的每个人都只需将hasAdminRight
与getter isHasAdminRight
/ getHasAdminRight
一起使用,因为它应该是惯例?
答案 0 :(得分:0)
使用getHasSomething()
而不是isHasSomething()
。
基于反射命名(例如PropertyValueFactory)的JavaFX中的逻辑与getter名称上的is
或get
前缀一起使用。所以你可以使用其中任何一个,它会工作正常。逻辑并不关心返回类型是否为布尔值,它只是首先检查get
前缀,如果找不到,则检查is
前缀。但是,相同的逻辑不会将hasSomething()
理解为getter,因为它不是get
或is
的前缀。