Для логического поля, каково соглашение об именах для его метода получения / установки? - PullRequest
146 голосов
/ 16 марта 2011

Например.

boolean isCurrent = false;

Как вы называете его геттер и сеттер?

Ответы [ 8 ]

215 голосов
/ 16 марта 2011

Предположим, у вас есть

boolean active;

Метод доступа:

public boolean isActive(){return this.active;}

public void setActive(boolean active){this.active = active;}

См. Также

74 голосов
/ 16 марта 2011

http://geosoft.no/development/javastyle.html#Specific

Для логических переменных и методов следует использовать префикс

is.

isSet, isVisible, isFinished, isFound, isOpen

Это соглашение об именах для логических методов и переменных, используемых Sun для базовых пакетов Java. Использование префикса is решает общую проблему выбора плохих логических имен, таких как status или flag.isStatus или isFlag просто не подходят, и программист вынужден выбирать более значимые имена.

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

void setFound(boolean isFound);

Существует несколько альтернатив префиксу is, который подходит в некоторых ситуациях.Это префиксы, которые можно и нужно:

boolean hasLicense(); 
boolean canEvaluate(); 
boolean shouldAbort = false;
58 голосов
/ 16 марта 2011

Для поля с именем isCurrent правильное имя получателя / установщика равно setCurrent() / isCurrent() (по крайней мере, так думает Eclipse), что сильно сбивает с толку и может быть связано с основной проблемой:

Ваше поле не должно называться isCurrent. Is - это глагол, и глаголы не соответствуют состоянию объекта. Вместо этого используйте прилагательное, и вдруг ваши имена получателей / установщиков приобретут больше смысла:

private boolean current;

public boolean isCurrent(){
    return current;
}

public void setCurrent(final boolean current){
    this.current = current;
}
5 голосов
/ 08 ноября 2016

Может быть, пришло время пересмотреть этот ответ?Лично я бы проголосовал за setActive() и unsetActive() (альтернативы могут быть setUnActive(), notActive(), disable() и т. Д. В зависимости от контекста), поскольку «setActive» подразумевает, что вы активируете его всегда, чего вы не делаете.т.Сказать «setActive» интуитивно, но фактически удалить активное состояние.

Другая проблема заключается в том, что вы не можете слушать конкретно событие SetActive CQRS, вам нужно будет прослушивать 'setActiveEvent 'и определите внутри, действительно ли установлен прослушиватель активным или нет.Или, конечно, определите, какое событие вызывать при вызове setActive(), но тогда это идет вразрез с принципом разделения проблем.

Хорошая статья по этому вопросу - статья Мартина Фаулера, посвященная FlagArgument: http://martinfowler.com/bliki/FlagArgument.html

Тем не менее, я пришел из PHP-фона и вижу, что эта тенденция становится все более популярной.Не уверен, сколько это живет с разработкой Java.

5 голосов
/ 16 марта 2011

Я считаю это будет:

void setCurrent(boolean current)
boolean isCurrent()
0 голосов
/ 16 августа 2018

Как сеттер, как насчет:

// setter
public void beCurrent(boolean X) {
    this.isCurrent = X;
}

или

// setter
public void makeCurrent(boolean X) {
    this.isCurrent = X;
}

Я не уверен, имеют ли эти названия смысл для носителей английского языка.

0 голосов
/ 01 февраля 2018
private boolean current;

public void setCurrent(boolean current){
    this.current=current;
}

public boolean hasCurrent(){
    return this.current;
}
0 голосов
/ 16 марта 2011
Setter: public void setCurrent(boolean val)
Getter: public boolean getCurrent()

Для логических значений вы также можете использовать

public boolean isCurrent()
...