Мне нравится использовать вопросительный знак в конце имен методов / функций на других языках. Java не позволяет мне этого делать. Как еще можно назвать логические методы возврата в Java в качестве обходного пути? Спользование is
, has
, should
, can
в передней части методы звука хорошо для некоторых случаев. Есть ли лучший способ назвать такие методы?
Например, createFreshSnapshot?
java
methods
naming-conventions
Letronje
источник
источник
?
в имени метода?p
в конце названия методаОтветы:
По соглашению вопрос задается от имени.
Вот несколько примеров, которые можно найти в JDK:
Таким образом, имена читаются так, как если бы в конце был вопросительный знак.
А значит,
true
значит да иfalse
значит нет.Или вы могли бы прочитать это как утверждение:
Примечание.
Иногда вы можете захотеть назвать метод как-нибудь вроде
createFreshSnapshot?
. Без вопросительного знака название подразумевает, что метод должен создавать моментальный снимок, а не проверять, требуется ли он.В этом случае вам следует переосмыслить то, о чем вы на самом деле спрашиваете. Что-то вроде
isSnapshotExpired
- это гораздо лучшее название, оно передает то, что вам скажет метод при его вызове. Подобный шаблон также может помочь сохранить больше ваших функций в чистоте и без побочных эффектов.Если вы делаете поиск Google для
isEmpty()
в API Java, вы получите много результатов.источник
isSnapshotExpired
или что-то в этом роде. (на основе ваших критериев)shouldHeartbeat()
метода.isEmpty()
иhasChildren()
есть вопросы , а не утверждение ? На самом деле, если вы думаете об этих именах как об утверждениях или предикатах, они читаются по-английски немного лучше.Если вы хотите, чтобы ваш класс был совместим со спецификацией Java Beans , чтобы инструменты, использующие отражение (например, JavaBuilders , JGoodies Binding ), могли распознавать логические геттеры, используя
getXXXX()
илиisXXXX()
как имя метода. Из спецификации Java Beans:источник
public boolean is<PropertyName>();
это похоже на общий.Я хочу опубликовать эту ссылку, так как она может помочь в дальнейшем для тех, кто проверяет этот ответ и ищет больше соглашений о стиле Java
Рекомендации по стилю программирования на Java
Пункт «2.13 - это префикс, который следует использовать для логических переменных и методов». имеет особое значение и предполагает префикс is .
Руководство по стилю предлагает следующее:
boolean hasLicense(); boolean canEvaluate(); boolean shouldAbort = false;
Если вы будете следовать Руководству, я считаю, что соответствующий метод будет назван:
источник
Для методов, которые могут потерпеть неудачу, то есть вы указываете логическое значение в качестве типа возврата, я бы использовал префикс
try
:if (tryCreateFreshSnapshot()) { // ... }
Во всех остальных случаях используйте префиксы вроде
is..
has..
was..
can..
allows..
..источник
Стандартным является использование в качестве префикса «есть» или «имеет». Например
isValid
,hasChildren
.источник
is
это тот, с которым я сталкивался чаще, чем любой другой. Однако все, что имеет смысл в текущей ситуации, - лучший вариант.источник
Я хочу по-другому взглянуть на это общее соглашение об именах, например:
см. java.util.Set :
boolean add(E e)
где обоснование:
сделайте некоторую обработку, затем сообщите , удалось ли это или нет .
Хотя
return
это действительноboolean
имя метода должно указывать на завершение обработки, а не на тип результата (в данном примере логическое значение).Ваш
createFreshSnapshot
пример кажется мне более связанным с этой точкой зрения, потому что, похоже, означает следующее: создайте свежий снимок, а затем сообщите, успешно ли завершилась операция создания. Учитывая эту аргументацию, названиеcreateFreshSnapshot
кажется лучшим для вашей ситуации.источник