Соглашения об именах переменных и методов для булевых глаголов в Java? [дубликат]

этот вопрос уже есть ответ здесь:

Я знаю, что многие предлагают это соглашение:

boolean deleted;
boolean isDeleted();

но что вы делаете, когда хотите назвать логическое значение, чтобы указать, что пользователь может уйти?

boolean userCanLeave
boolean isUserCanLeave()

boolean canUserLeave
boolean isCanUserLeave()

boolean userLeave
boolean isUserLeave()

boolean userLeave
boolean canUserLeave()

Я не уверен, есть ли какой-либо стандарт для этого или вы просто берете тот, который вы считаете наиболее читаемым? Здесь интересна переменная для сопоставления имен методов getter.

3 ответов


вы должны использовать лучшее имя переменной типа userAllowedToLeave.

и затем используйте метод getter как isUserAllowedToLeave().

это, по крайней мере, использует геттер "is" и звучит грамматически правильно.


использование таких логических значений почти всегда является плохой и запутанной идеей. Если вы хотите сделать свой код понятным и легко поддерживаемым, вы должны использовать перечисление для представления состояния, возможно, с сильными правилами перехода (FSM).

предполагая, что ваша концепция "отпуск" основана на том, выполнил ли пользователь задачу или набор задач, тогда у вас может быть

public enum UserState { inProgress, complete }

затем вы можете реализовать метод leave на вашем классе пользователя, как это:

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

здесь state является частным экземпляром перечисления, определенного выше. Затем вы можете рефреймировать вопрос isLeaveable для getState, если такая вещь необходима. Конечно, вам также понадобится complete() метод, который изменит состояние соответствующим образом и который будет вызван, когда пользователь завершит свои задачи.


многие фреймворки все еще используют вызовы методов для установки значений на бобах, и эти методы должны соответствовать определенному шаблону:

isXXX или getXXX

поэтому я стараюсь придерживаться этого, даже если я не использую фреймворки для создания экземпляров бобов или если эти фреймворки используют отражение для привязки прямо к переменным. Я все еще думаю, что это хорошая практика.

так getUserCanLeave()? Или isUserLeavable()?