JavaFX布尔属性命名约定

时间:2016-12-30 02:36:27

标签: java javafx properties naming-conventions

我知道布尔属性的常规约定是对属性本身使用形容词,并使用"是"对于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一起使用,因为它应该是惯例?

1 个答案:

答案 0 :(得分:0)

使用getHasSomething()而不是isHasSomething()

基于反射命名(例如PropertyValueFactory)的JavaFX中的逻辑与getter名称上的isget前缀一起使用。所以你可以使用其中任何一个,它会工作正常。逻辑并不关心返回类型是否为布尔值,它只是首先检查get前缀,如果找不到,则检查is前缀。但是,相同的逻辑不会将hasSomething()理解为getter,因为它不是getis的前缀。