Java中布尔动词的变量和方法命名约定



我知道很多人建议这样做:

boolean deleted;
boolean isDeleted();

但是当你想命名一个布尔值来指示用户可以离开时,你该怎么做呢?

boolean userCanLeave
boolean isUserCanLeave()
boolean canUserLeave
boolean isCanUserLeave()
boolean userLeave
boolean isUserLeave()
boolean userLeave
boolean canUserLeave()

我不确定这是否有任何标准,或者你只是采取一个你认为最易读的?这里有趣的是getter方法名映射的变量

您应该使用一个更好的变量名,如userAllowedToLeave

,然后使用getter方法作为isUserAllowedToLeave()

这至少使用了"is" getter,而且听起来语法也正确。

许多框架仍然使用方法调用来设置bean的值,并且这些方法需要符合特定的模式:

isXXXgetXXX

所以我尽量坚持这一点,即使我不使用框架来创建bean的实例,或者如果这些框架使用反射直接绑定到变量。我仍然认为这是很好的练习。

那么getUserCanLeave() ?还是isUserLeavable() ?

像这样使用布尔值几乎总是一个糟糕且令人困惑的想法。如果你想让你的代码易于理解和维护,你应该使用枚举来表示状态,也许使用强转换规则(FSM)。

假设您的"leave"概念是基于用户是否完成了一个任务或一组任务,那么您可能有

public enum UserState { inProgress, complete }

你可以在你的用户类上实现一个方法leave,像这样:

public void leave() { if (state == UserState.complete) ... }

,其中state是上面定义的枚举的私有实例。然后,如果需要的话,您可以将问题isLeaveable重新构造为getState。当然,您还需要一个complete()方法来适当地更改状态,并在用户完成任务时调用该方法。

最新更新