241 votes

Pour un champ booléen, quelle est la convention de dénomination pour son getter/setter ?

Eg.

boolean isCurrent = false;

Comment nommez-vous ses getter et setter ?

2 votes

Je suppose que vous faites référence à JavaBeans, auquel cas la réponse de @Jigar Joshi est correcte. Cependant, si vous demandez des getter/setters génériques, la seule convention est que les méthodes contiennent le nom du champ et que le getter ne prend aucun argument et renvoie une valeur, le setter prend un argument et ne renvoie aucune valeur ou renvoie l'objet lui-même. Voir Buffer comme exemple d'une autre approche des getter/setters.

328voto

Jigar Joshi Points 116533

Supposons que vous ayez

boolean active;

La méthode des accesseurs serait

public boolean isActive(){return this.active;}

public void setActive(boolean active){this.active = active;}

Voir aussi

14 votes

Pourriez-vous indiquer la section des conventions de code de Sun où les noms des récupérateurs booléens sont spécifiquement couverts ? Je n'ai pas pu la trouver.

6 votes

J'ai un boolean classé nommé hasCustomName Maintenant, quel nom dois-je lui donner ? getter y setter méthodes ? Est-ce que setHasCustomName[setter] y hasCustomName[getter] Bien ?

0 votes

@Hadi nommez simplement votre variable "customerName" et générez un getter et un setter pour celle-ci. Les getter et setters attendus sont public boolean isCustomerName(){return this.customerName;} public void setCustomerName(boolean customerName){this.customerName= customerName;}

122voto

Narayan Points 1985

http://geosoft.no/development/javastyle.html#Specific

  1. is doit être utilisé pour les variables et méthodes booléennes.

    isSet , isVisible , isFinished , isFound , isOpen

Il s'agit de la convention de dénomination des méthodes et variables booléennes utilisées par Sun pour les paquets de base de Java. L'utilisation du préfixe is résout un problème commun problème courant de choix de mauvais noms booléens comme status ou flag. isStatus ou isFlag ne conviennent tout simplement pas, et le programmeur est obligé de choisir des noms plus noms plus significatifs.

Méthodes Setter pour les variables booléennes doivent avoir le préfixe set comme dans :

void setFound(boolean isFound);

Il existe quelques alternatives au préfixe is qui conviennent mieux dans certaines situations. Il s'agit des préfixes has, can et devrait :

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

9 votes

Donc s'il y a la propriété booléenne hasData à quoi ressemblerait le setter ? Très certainement, setData(bool hasData) ça me semble terriblement mauvais...

20 votes

@FranzB. J'utiliserais setHasData(...)

4 votes

Pour ceux qui veulent suivre la spécification des JavaBeans, il semble que has , can , should Les préfixes ne font pas partie de la spécification. Référence Spécification JavaBeans 1.01 section 8.3.

87voto

Sean Patrick Floyd Points 109428

Pour un champ nommé isCurrent le nom correct du getter / setter est le suivant setCurrent() / isCurrent() (du moins, c'est ce que pense Eclipse), ce qui est très déroutant et peut être ramené au problème principal :

Votre champ ne doit pas être appelé isCurrent en premier lieu. Est est un verbe et les verbes sont inappropriés pour représenter l'état d'un objet. Utilisez un adjectif à la place, et soudainement vos noms de getter / setter auront plus de sens :

private boolean current;

public boolean isCurrent(){
    return current;
}

public void setCurrent(final boolean current){
    this.current = current;
}

6 votes

Et si le booléen n'est pas une primitive ? Si c'est un booléen, doit-il être un get ou un is ?

2 votes

Non, une telle méthode pourrait renvoyer null, ce qui provoquerait une NullPointerException. Mais j'essaierais d'éviter de renvoyer des booléens en premier lieu.

3 votes

@Arun Je pense que cela devrait être set/get au lieu de set/is car le booléen est un objet au lieu d'une primitive, car il a 3 états, false, true ou null.

8voto

miku Points 63392

I croire ce serait :

void setCurrent(boolean current)
boolean isCurrent()

3 votes

J'aime cette convention, mais les conventions n'ont pas vraiment d'importance. Le plus important est de s'en tenir à celle que vous avez choisie.

6 votes

Conventions @Clement faire importe lorsque vous vous appuyez sur des outils qui utilisent ces conventions. JavaBeans est une convention largement soutenue par de nombreuses bibliothèques (JSP / JSF / Spring / Groovy, pour n'en citer que quelques-unes). Briser les conventions signifie briser le mode de fonctionnement de ces bibliothèques.

1 votes

@Sean C'est vrai, à l'exception des cadres qui s'appuient sur des conventions plutôt que sur la configuration. Dans ce cas, les conventions sont imposées par le framework, donc vous ne choisissez rien. Bonne remarque.

-4voto

Suraj Chandran Points 12859
Setter: public void setCurrent(boolean val)
Getter: public boolean getCurrent()

Pour les booléens, vous pouvez également utiliser

public boolean isCurrent()

12 votes

Parce que le PO pose une question sur les valeurs booléennes. Un getter préfixé par 'get' n'est (lisez : ne devrait) jamais être utilisé pour des valeurs booléennes.

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