J'aime utiliser le point d'interrogation à la fin des noms de méthode / fonction dans d'autres langues. Java ne me laisse pas faire ça. Pour contourner ce problème, comment puis-je nommer des méthodes de retour booléennes en Java? L' utilisation d' un is
, has
, should
, can
à l'avant d'un son de méthode acceptable pour certains cas. Existe-t-il une meilleure façon de nommer ces méthodes?
Par exemple, createFreshSnapshot?
java
methods
naming-conventions
Letronje
la source
la source
?
dans un nom de méthode?p
à la fin du nom de la méthodeRéponses:
La convention est de poser une question dans le nom.
Voici quelques exemples que l'on peut trouver dans le JDK:
De cette façon, les noms sont lus comme s'ils auraient un point d'interrogation à la fin.
Et, alors,
true
signifie oui, etfalse
signifie non.Ou, vous pouvez le lire comme une assertion:
Remarque:
Parfois, vous voudrez peut-être nommer une méthode quelque chose comme
createFreshSnapshot?
. Sans le point d'interrogation, le nom implique que la méthode doit créer un instantané, au lieu de vérifier si un est nécessaire.Dans ce cas, vous devez repenser ce que vous demandez réellement. Quelque chose comme
isSnapshotExpired
est un nom bien meilleur, et transmet ce que la méthode vous dira lorsqu'elle sera appelée. Suivre un modèle comme celui-ci peut également aider à garder plus de fonctions pures et sans effets secondaires.Si vous faites une recherche Google pour
isEmpty()
l'API Java, vous obtenez beaucoup de résultats.la source
isSnapshotExpired
ou quelque chose comme ça. (basé sur vos critères)shouldHeartbeat()
méthode.isEmpty()
ethasChildren()
sont des questions et non des affirmations ? Il se lit en fait un peu mieux en anglais si vous considérez ces noms comme des assertions ou des prédicats.Si vous souhaitez que votre classe soit compatible avec la spécification Java Beans , de sorte que les outils utilisant la réflexion (par exemple JavaBuilders , JGoodies Binding ) puissent reconnaître les getters booléens, soit utiliser
getXXXX()
soitisXXXX()
un nom de méthode. À partir de la spécification Java Beans:la source
public boolean is<PropertyName>();
ça ressemble à un générique.Je souhaite publier ce lien car cela peut aider davantage les personnes qui vérifient cette réponse et recherchent plus de convention de style java
Instructions de style de programmation Java
L'élément "2.13 est le préfixe doit être utilisé pour les variables et méthodes booléennes." est spécifiquement pertinent et suggère le préfixe is .
Le guide de style continue en suggérant:
Si vous suivez les directives, je pense que la méthode appropriée serait nommée:
la source
Pour les méthodes qui peuvent échouer, c'est-à-dire que vous spécifiez booléen comme type de retour, j'utiliserais le préfixe
try
:Pour tous les autres cas, utilisez des préfixes comme
is..
has..
was..
can..
allows..
..la source
La norme est d'utiliser «est» ou «a» comme préfixe. Par exemple
isValid
,hasChildren
.la source
is
est celui que j'ai rencontré plus que tout autre. Ce qui a du sens dans la situation actuelle est cependant la meilleure option.la source
Je veux montrer un point de vue différent sur cette convention de dénomination générale , par exemple:
voir java.util.Set :
boolean add(E e)
où la justification est:
effectuez un traitement puis indiquez s'il a réussi ou non .
Alors que le
return
est en effet un,boolean
le nom de la méthode doit pointer le traitement à terminer au lieu du type de résultat (booléen pour cet exemple).Votre
createFreshSnapshot
exemple me semble plus lié à ce point de vue car il semble vouloir dire ceci: créez un instantané frais puis indiquez si l'opération de création a réussi. Compte tenu de ce raisonnement, le nomcreateFreshSnapshot
semble être le meilleur pour votre situation.la source