Java 中布尔动词的变量和方法命名约定?
Variable and method naming conventions for boolean verbs in Java?
我知道很多人建议这个约定:
boolean deleted;
boolean isDeleted();
但是当你想命名一个布尔值来指示用户可以离开时你会怎么做?
boolean userCanLeave
boolean isUserCanLeave()
boolean canUserLeave
boolean isCanUserLeave()
boolean userLeave
boolean isUserLeave()
boolean userLeave
boolean canUserLeave()
我不确定这是否有任何标准,还是您只采用您认为最易读的标准?这里有趣的是 getter 方法名称映射的变量。
许多框架仍然使用方法调用来设置 beans 的值,这些方法需要符合特定的模式:
isXXX
或 getXXX
所以我尽量坚持这一点,即使我没有使用框架来创建 bean 的实例,或者如果这些框架使用反射直接绑定到变量。我仍然认为这是很好的做法。
所以getUserCanLeave()
?或者 isUserLeavable()
?
像这样使用布尔值几乎总是一个糟糕且令人困惑的想法。如果你想让你的代码易于理解和维护,你应该使用枚举来表示状态,也许有强大的转换规则(FSM)。
假设您的 'leave' 概念是基于用户是否完成了一项任务或一组任务,那么您可能
public enum UserState { inProgress, complete }
然后您可以在您的用户 class 上实现方法 leave
,如下所示:
public void leave() { if (state == UserState.complete) ... }
其中 state
是上面定义的枚举的私有实例。然后,如果需要这样的事情,您可以将问题 isLeaveable 重新定义为 getState。当然,您还需要一个 complete()
方法来适当地更改状态,并在用户完成任务时调用该方法。
您应该使用更好的变量名,例如 userAllowedToLeave
。
并且,然后使用getter方法作为isUserAllowedToLeave()
。
这至少使用了 "is" getter,并且听起来语法也正确。
我知道很多人建议这个约定:
boolean deleted;
boolean isDeleted();
但是当你想命名一个布尔值来指示用户可以离开时你会怎么做?
boolean userCanLeave
boolean isUserCanLeave()
boolean canUserLeave
boolean isCanUserLeave()
boolean userLeave
boolean isUserLeave()
boolean userLeave
boolean canUserLeave()
我不确定这是否有任何标准,还是您只采用您认为最易读的标准?这里有趣的是 getter 方法名称映射的变量。
许多框架仍然使用方法调用来设置 beans 的值,这些方法需要符合特定的模式:
isXXX
或 getXXX
所以我尽量坚持这一点,即使我没有使用框架来创建 bean 的实例,或者如果这些框架使用反射直接绑定到变量。我仍然认为这是很好的做法。
所以getUserCanLeave()
?或者 isUserLeavable()
?
像这样使用布尔值几乎总是一个糟糕且令人困惑的想法。如果你想让你的代码易于理解和维护,你应该使用枚举来表示状态,也许有强大的转换规则(FSM)。
假设您的 'leave' 概念是基于用户是否完成了一项任务或一组任务,那么您可能
public enum UserState { inProgress, complete }
然后您可以在您的用户 class 上实现方法 leave
,如下所示:
public void leave() { if (state == UserState.complete) ... }
其中 state
是上面定义的枚举的私有实例。然后,如果需要这样的事情,您可以将问题 isLeaveable 重新定义为 getState。当然,您还需要一个 complete()
方法来适当地更改状态,并在用户完成任务时调用该方法。
您应该使用更好的变量名,例如 userAllowedToLeave
。
并且,然后使用getter方法作为isUserAllowedToLeave()
。
这至少使用了 "is" getter,并且听起来语法也正确。