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

时间:2016-10-31 09:53:33

标签: java variables naming

我知道有很多人建议这个惯例:

boolean deleted;
boolean isDeleted();

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

boolean userCanLeave
boolean isUserCanLeave()

boolean canUserLeave
boolean isCanUserLeave()

boolean userLeave
boolean isUserLeave()

boolean userLeave
boolean canUserLeave()

我不确定是否有任何标准,或者您只是选择您认为最具可读性的标准?这是getter方法名称映射的变量,这里很有趣。

3 个答案:

答案 0 :(得分:9)

您应该使用更好的变量名称,例如keyPath

然后,将getter方法用作userAllowedToLeave

这至少使用了“is”getter,听起来语法也正确。

答案 1 :(得分:2)

使用这样的布尔语几乎总是一个糟糕而混乱的想法。如果您希望使代码易于理解且易于维护,则应使用枚举来表示状态,可能使用强转换规则(FSM)。

假设你的离开'概念取决于用户是否已完成任务或任务集,然后您可能

public enum UserState { inProgress, complete }

然后,您可以在您的用户类上实现方法leave,如下所示:

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

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

答案 2 :(得分:1)

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

isXXXgetXXX

所以我尽力坚持这一点,即使我没有使用框架来创建bean的实例,或者这些框架使用反射直接绑定到变量。我仍然认为这是一种很好的做法。

那么getUserCanLeave()?或isUserLeavable()