Gosto de usar pontos de interrogação no final dos nomes de métodos / funções em outras línguas. Java não me deixa fazer isso. Como solução alternativa, de que outra forma posso nomear métodos de retorno booleanos em Java? Usando um is
, has
, should
, can
na frente de um som método bom para alguns casos. Existe uma maneira melhor de nomear esses métodos?
Por exemplo, createFreshSnapshot?
java
methods
naming-conventions
Letronje
fonte
fonte
?
em um nome de método?p
no final do nome do métodoRespostas:
A convenção é fazer uma pergunta em nome.
Aqui estão alguns exemplos que podem ser encontrados no JDK:
Dessa forma, os nomes são lidos como se tivessem um ponto de interrogação no final.
E, então,
true
significa sim efalse
significa não.Ou você pode ler como uma afirmação:
Nota:
Às vezes, você pode querer nomear um método de forma semelhante
createFreshSnapshot?
. Sem o ponto de interrogação, o nome indica que o método deve criar um instantâneo, em vez de verificar se um é necessário.Nesse caso, você deve repensar o que está realmente pedindo. Algo como
isSnapshotExpired
é um nome muito melhor e transmite o que o método dirá quando for chamado. Seguir um padrão como esse também pode ajudar a manter mais puras de suas funções e sem efeitos colaterais.Se você fizer uma Pesquisa Google por
isEmpty()
na API Java, obterá muitos resultados.fonte
isSnapshotExpired
ou algo parecido. (com base em seus critérios)shouldHeartbeat()
método.isEmpty()
ehasChildren()
são perguntas , e não afirmações ? Na verdade, a leitura é um pouco melhor em inglês se você pensar nesses nomes como afirmações ou predicados.Se desejar sua classe para ser compatível com a especificação Java Beans , de modo que as ferramentas que utiliza a reflexão (por exemplo JavaBuilders , JGoodies de ligação ) pode reconhecer boolean getters, tanto para uso
getXXXX()
ouisXXXX()
como um nome de método. Da especificação Java Beans:fonte
public boolean is<PropertyName>();
Parece um genérico.Quero postar este link, pois pode ajudar ainda mais para aqueles que verificam esta resposta e procuram mais convenções de estilo java
Diretrizes de estilo de programação Java
O item "2.13 is prefix deve ser usado para variáveis e métodos booleanos." é especificamente relevante e sugere o prefixo is .
O guia de estilo sugere:
Se você seguir as Diretrizes, acredito que o método apropriado seria nomeado:
fonte
Para métodos que podem falhar, ou seja, você especifica booleano como tipo de retorno, eu usaria o prefixo
try
:Para todos os outros casos, use prefixos como
is..
has..
was..
can..
allows..
..fonte
O padrão é usar 'é' ou 'tem' como prefixo. Por exemplo
isValid
,hasChildren
.fonte
is
é o que eu encontrei mais do que qualquer outro. O que quer que faça sentido na situação atual é a melhor opção.fonte
Quero apontar uma visão diferente sobre esta convenção geral de nomenclatura, por exemplo:
veja java.util.Set :
boolean add(E e)
onde a justificativa é:
fazer algum processamento e relatar se foi bem-sucedido ou não .
Embora
return
seja realmente um,boolean
o nome do método deve apontar o processamento para ser concluído em vez do tipo de resultado (booleano neste exemplo).Seu
createFreshSnapshot
exemplo me parece mais relacionado a este ponto de vista porque parece significar o seguinte: crie um instantâneo fresco e depois relate se a operação de criação foi bem-sucedida. Diante desse raciocínio, o nomecreateFreshSnapshot
parece ser o mais adequado para sua situação.fonte