Соглашения об именах для методов java, возвращающих логическое значение(без знака вопроса)
мне нравится использовать знак вопроса в конце имен методов / функций на других языках. Java не позволяет мне это делать. В качестве обходного пути как еще я могу назвать логические методы возврата в Java? Используяis
,has
,should
,can
в передней части метода звучит нормально для некоторых случаев. Есть ли лучший способ назвать такие методы?
например createFreshSnapshot?
6 ответов:
конвенция должна задать вопрос от имени.
вот несколько примеров, которые можно найти в JDK:
isEmpty() hasChildren()
таким образом, имена читаются так, как будто они будут иметь знак вопроса в конце.
коллекция пустая?
Есть ли у этого узла дети?, а потом
true
означает "да", иfalse
значит нет.или, вы могли бы прочитать это как утверждение:
коллекция пуста.
Узел имеет детейПримечание:
Иногда вы можете назвать метод что-то вродеcreateFreshSnapshot?
. Без знака вопроса имя подразумевает, что метод должен создавать моментальный снимок, а не проверять, требуется ли он.в этом случае вы должны переосмыслить то, что вы на самом деле спрашиваете. Что-то вроде
isSnapshotExpired
это гораздо лучшее название, и передает то, что скажет метод вы когда это называется. Следуя такой схеме, вы также можете сохранить больше своих функций в чистоте и без побочных эффектов.если вы Поиск В Google на
isEmpty()
в Java API вы получаете много результатов.
если вы хотите, чтобы ваш класс был совместим с спецификация Java Beans, так что инструменты, использующие отражение (например JavaBuilders, Привязка JGoodies) может распознавать логические геттеры, либо использовать
getXXXX()
илиisXXXX()
как имя метода. Из спецификации Java Beans:8.3.2 логические свойства
кроме того, для булевых свойств мы разрешаем методу getter соответствовать шаблону:
public boolean is
Имя_свойства>()
;Это"Имя_свойства> "метод может быть предоставлен вместо" getИмя_свойства> "метод, или он может быть предоставлен в дополнение к" getИмя_свойства>" метод. В любом случае, если "являетсяИмя_свойства> " метод присутствует для логического свойства, то мы будем использовать "isИмя_свойства> " метод для чтения значения свойства. Образец логическое свойство может быть:
public boolean isMarsupial(); public void setMarsupial(boolean m);
Я хочу опубликовать эту ссылку, так как это может помочь в дальнейшем для peeps проверить этот ответ и искать больше Java style convention
Рекомендации По Стилю Программирования Java
пункт 14 особенно актуален и предполагает и префикс.
руководство по стилю продолжает предлагать:
есть несколько альтернатив и префикс, который лучше подходит в некоторых ситуациях. Это и,можете и должны префиксы:
boolean hasLicense(); boolean canEvaluate(); boolean shouldAbort = false;
Если вы будете следовать рекомендациям, я считаю, что соответствующий метод будет называться:
shouldCreateFreshSnapshot()