117 votes

Conventions d'appellation pour les méthodes Java qui renvoient un booléen

J'aime utiliser le point d'interrogation à la fin des noms de méthodes/fonctions dans d'autres langues. Java ne me permet pas de le faire. Comment puis-je nommer autrement les méthodes à retour booléen en Java ? En utilisant un is , has , should , can à l'avant d'une méthode sont acceptables dans certains cas. Existe-t-il une meilleure façon de nommer ces méthodes ?

Par exemple, createFreshSnapshot ?

3 votes

Quelle langue permet à un ? dans le nom d'une méthode ?

12 votes

@SLaks, Scheme, Ruby ...

0 votes

Dans le schéma, nous mettons toujours un p à la fin du nom de la méthode

151voto

jjnguy Points 62123

La convention consiste à poser une question dans le nom.

Voici quelques exemples que l'on peut trouver dans le JDK :

isEmpty()

hasChildren()

De cette manière, les noms sont lus comme s'ils avaient un point d'interrogation à la fin.

La collection est-elle vide ?
Ce nœud a-t-il des enfants ?

Et puis.., true signifie oui, et false signifie non.

On peut aussi le lire comme une affirmation :

La collection est vide.
Le nœud a des enfants

Remarque :
Il peut arriver que vous souhaitiez nommer une méthode de la manière suivante createFreshSnapshot? . Sans le point d'interrogation, le nom implique que la méthode devrait créer un instantané, au lieu de vérifier si un instantané est nécessaire.

Dans ce cas, vous devriez reconsidérer ce que vous demandez réellement. Quelque chose comme isSnapshotExpired est un bien meilleur nom, qui indique ce que la méthode vous dira lorsqu'elle sera appelée. Le fait de suivre un tel modèle peut également vous aider à conserver un plus grand nombre de fonctions pures et sans effets secondaires.

Si vous faites un Recherche Google para isEmpty() dans l'API Java, vous obtenez de nombreux résultats.

31voto

Jason S Points 58434

Si vous souhaitez que votre classe soit compatible avec la norme Spécification des Java Beans Ainsi, les outils utilisant la réflexion (par ex. JavaBuilders , JGoodies Binding ) peut reconnaître des getters booléens, soit en utilisant getXXXX() o isXXXX() comme nom de méthode. Extrait de la spécification Java Beans :

8.3.2 Propriétés booléennes

En outre, pour les propriétés booléennes, nous permettons à une méthode d'obtention de correspondre au modèle :

public boolean is < Nom du bien > () ;

Ce "est< Nom du bien >" peut être fournie à la place d'une méthode "get< Nom du bien >", ou elle peut être fournie en plus d'une méthode "get< Nom du bien >". Dans les deux cas, si la méthode "is< Nom du bien >" est présente pour une propriété booléenne, alors nous utiliserons la méthode "is< Nom du bien >" pour lire la valeur de la propriété. Un exemple de propriété booléenne pourrait être :

public boolean isMarsupial();
public void setMarsupial(boolean m);

29voto

kommradHomer Points 1601

Je souhaite publier ce lien car il pourrait aider les personnes qui consultent cette réponse et qui recherchent d'autres conventions de style java.

Directives de style pour la programmation en Java

Poste "2.13 es doit être utilisé pour les variables et les méthodes booléennes" est spécifiquement pertinent et suggère l'utilisation du préfixe es préfixe.

Le guide de style poursuit en suggérant ce qui suit :

Il existe quelques alternatives à la es préfixe qui convient mieux dans certaines situations. Ces préfixes sont les suivants a , peut y devrait préfixes :

boolean hasLicense();
boolean canEvaluate();
boolean shouldAbort = false;

Si vous suivez les lignes directrices, je pense que la méthode appropriée est celle du nom :

shouldCreateFreshSnapshot()

11voto

codymanix Points 12119

Pour les méthodes qui peuvent échouer, c'est-à-dire pour lesquelles vous spécifiez un booléen comme type de retour, j'utiliserais le préfixe try :

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

Dans tous les autres cas, utilisez des préfixes tels que is.. has.. was.. can.. allows.. ..

16 votes

Mais try n'indique pas qu'il s'agit d'une question (avec une valeur de retour).

2 votes

Ne jamais renvoyer un booléen pour indiquer si une méthode a échoué ou non. Si la méthode a échoué, elle lève une exception. Imaginez que la méthode ait échoué et que vous obteniez un faux, comment pourriez-vous déterminer ce qui n'a pas fonctionné ?

0 votes

@WoutervanKoppen D'accord. Il faut garder à l'esprit que les exceptions ne doivent être utilisées que pour des comportements exceptionnels. S'il est courant dans l'exemple ci-dessus de ne pas pouvoir créer le nouvel instantané, alors je suggérerais de créer une méthode canCreateFreshSnapshost() et seulement si l'appel aboutit, j'appelle une méthode appelée createFreshSnapshot qui peut renvoyer une exception en cas d'échec inattendu.

5voto

BillThor Points 3319

La norme est l'utilisation is o has comme préfixe. Par exemple isValid , hasChildren .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X