Par exemple.
boolean isCurrent = false;
Comment nommez-vous son getter et son setter?
Par exemple.
boolean isCurrent = false;
Comment nommez-vous son getter et son setter?
Réponses:
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 également
hasCustomName
, maintenant que dois-je nommer pour ses méthodes getter et setter ? Est-ce setHasCustomName[setter]
et hasCustomName[getter]
bon?
public boolean isCustomerName(){return this.customerName;} public void setCustomerName(boolean customerName){this.customerName= customerName;}
http://geosoft.no/development/javastyle.html#Specific
is
Le préfixe 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 booléennes et des variables utilisées par Sun pour les packages Java Core. L'utilisation du préfixe is résout un problème courant de choix de mauvais noms booléens tels que status ou flag. isStatus ou isFlag ne correspondent tout simplement pas, et le programmeur est obligé de choisir des noms plus significatifs.
Les méthodes Setter pour les variables booléennes doivent avoir un préfixe défini comme dans:
void setFound(boolean isFound);
Il existe quelques alternatives au préfixe is qui s'adaptent mieux dans certaines situations. Ce sont les préfixes has, can et should:
boolean hasLicense(); boolean canEvaluate(); boolean shouldAbort = false;
hasData
, à quoi ressemblerait le setter? Très certainement, cela setData(bool hasData)
me semble terriblement faux ...
has
, can
, should
préfixes ne font pas partie de la spécification. Référence JavaBeans Specification 1.01 section 8.3.
boolean isIsCurrent(){...}
sinon le framework utilisé pour désérialiser l'objet, se plaignait getter not found for property isCurrent
.
Pour un champ nommé isCurrent
, le nom correct du getter / setter est setCurrent()
/ isCurrent()
(du moins c'est ce que pense Eclipse), ce qui est très déroutant et peut être retracé au problème principal:
Votre champ ne doit pas être appelé isCurrent
en premier lieu. Is est un verbe et les verbes ne sont pas appropriés pour représenter l'état d'un objet. Utilisez plutôt un adjectif, 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;
}
get
préfixe lors de la récupération d'un Boolean
vs is
pour unboolean
Je crois que ce serait:
void setCurrent(boolean current)
boolean isCurrent()
Il est peut-être temps de commencer à réviser cette réponse? Personnellement , je voterais pour setActive()
et unsetActive()
(alternatives peuvent être setUnActive()
, notActive()
, disable()
, etc. selon le contexte) depuis « setActive » implique que vous l' activer à tout moment, que vous ne faites. C'est un peu contre-intuitif de dire "setActive" mais en fait de supprimer l'état actif.
Un autre problème est que vous ne pouvez pas écouter spécifiquement un événement SetActive de manière CQRS, vous auriez besoin d'écouter un 'setActiveEvent' et de déterminer à l'intérieur de cet écouteur s'il a été activé ou non. Ou bien sûr, déterminez quel événement appeler lors de l'appel, setActive()
mais cela va alors à l'encontre du principe de séparation des préoccupations.
Une bonne lecture à ce sujet est l'article FlagArgument de Martin Fowler: http://martinfowler.com/bliki/FlagArgument.html
Cependant, je viens d'un milieu PHP et je vois cette tendance de plus en plus adoptée. Je ne sais pas à quel point cela vit avec le développement Java.
private boolean current;
public void setCurrent(boolean current){
this.current=current;
}
public boolean hasCurrent(){
return this.current;
}
has
utilisé pour BO ou un tel service avec un certain traitement alors que pour POJO, c'est is
. et veuillez ajouter une description de votre réponse.
Setter: public void setCurrent(boolean val)
Getter: public boolean getCurrent()
Pour les booléens, vous pouvez également utiliser
public boolean isCurrent()
En tant que setter, que diriez-vous:
// setter
public void beCurrent(boolean X) {
this.isCurrent = X;
}
ou
// setter
public void makeCurrent(boolean X) {
this.isCurrent = X;
}
Je ne suis pas sûr que ces noms aient du sens pour les anglophones.