Соглашения об именах для методов java, возвращающих логическое значение(без знака вопроса)


мне нравится использовать знак вопроса в конце имен методов / функций на других языках. Java не позволяет мне это делать. В качестве обходного пути как еще я могу назвать логические методы возврата в Java? Используяis,has,should,can в передней части метода звучит нормально для некоторых случаев. Есть ли лучший способ назвать такие методы?

например createFreshSnapshot?

6 72

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()

для методов, которые могут потерпеть неудачу, то есть вы указываете boolean как тип возврата, я бы использовал префикс try:

if (tryCreateFreshSnapshot())
{
  // ...
}

для всех остальных случаев используйте префиксы типа is..has..was..can..allows.. ..

стандарт-это использование' is 'или' has ' в качестве префикса. Например isValid,hasChildren.

is Это тот, с которым я столкнулся больше, чем с любым другим. Однако все, что имеет смысл в текущей ситуации, является лучшим вариантом.