Соглашения об именах для java-методов, возвращающих логические значения (без знака вопроса)
Мне нравится использовать знак вопроса в конце имен методов/функций на других языках. Java не позволяет мне это делать. Как работать, как еще я могу назвать логические методы возврата в java? В некоторых случаях использование "is", "has", "should", "can" в начале метода звучит нормально. Есть ли лучший способ назвать такие методы?
Например, createFreshSnapshot?
Ответы
Ответ 1
Соглашение состоит в том, чтобы задать вопрос в названии.
isEmpty()
hasChildren()
Таким образом, имена читаются так, как будто они будут иметь знак вопроса в конце.
Является ли коллекция пустой?
У этого Node есть дети?
И тогда true
означает "да", а false
означает "нет".
Или вы можете прочитать это как утверждение:
Коллекция пуста.
Node имеет детей
Примечание:
Иногда вам может понадобиться назвать метод, похожий на createFreshSnapshot?
. Без знака вопроса имя подразумевает, что метод должен создавать моментальный снимок, а не проверять, требуется ли это.
В этом случае вы должны переосмыслить то, что вы на самом деле спрашиваете. Что-то вроде isSnapshotExpired
является гораздо лучшим именем и передает то, что метод скажет вам, когда он вызывается.
Если вы используете Google Search для isEmpty()
в Java API, вы получаете много результатов.
Ответ 2
Если вы хотите, чтобы ваш класс совместим с Java Beans спецификацией, чтобы инструменты, использующие отражение (например, JavaBuilders, JGoodies Binding) может распознавать логические геттеры, либо используйте getXXXX()
или isXXXX()
в качестве имени метода. Из спецификации Java Beans:
8.3.2 Булевы свойства
Кроме того, для булевых свойств мы позволяем методу геттера соответствовать шаблону:
public boolean is
< ИмяСвойствa > ()
;
Этот метод "is <PropertyName> " может быть предоставлен вместо метода "get <PropertyName> " или может быть предоставлен в дополнение к методу "get <PropertyName> ". В любом случае, если метод "is <PropertyName> " присутствует для логического свойства, мы будем использовать метод "is <PropertyName> " для чтения значения свойства. Примером логического свойства может быть:
public boolean isMarsupial();
public void setMarsupial(boolean m);
Ответ 3
Я хочу опубликовать эту ссылку, так как это может помочь дальнейшему просмотру этого ответа и поиску более условного соглашения по java
Руководства по стилю Java программирования
Пункт 14 имеет особое значение и предлагает префикс.
В руководстве по стилю далее предлагается:
Существует несколько альтернатив префиксу, который лучше подходит в некоторых ситуациях. Они имеют, могут и должны иметь префиксы:
boolean hasLicense();
boolean canEvaluate();
boolean shouldAbort = false;
Если следовать Руководству, я считаю, что соответствующий метод будет называться:
shouldCreateFreshSnapshot()
Ответ 4
Для методов, которые могут не работать, вы указываете boolean как возвращаемый тип, я бы использовал префикс try
:
if (tryCreateFreshSnapshot())
{
// ...
}
Для всех остальных случаев используйте префиксы типа is..
has..
was..
can..
allows..
..
Ответ 5
Стандартом является использование 'is' или 'has' в качестве префикса. Например isValid
, hasChildren
.
Ответ 6
is
- это тот, с которым я столкнулся больше, чем любой другой. Однако, что имеет смысл в текущей ситуации, это лучший вариант.