Z.B.
boolean isCurrent = false;
Wie nennt man Getter und Setter?
Z.B.
boolean isCurrent = false;
Wie nennt man Getter und Setter?
Antworten:
Angenommen, Sie haben
boolean active;
Accessors Methode wäre
public boolean isActive(){return this.active;}
public void setActive(boolean active){this.active = active;}
Siehe auch
hasCustomName
. Was soll ich nun für die Getter- und Setter- Methoden nennen? Ist setHasCustomName[setter]
und hasCustomName[getter]
gut?
public boolean isCustomerName(){return this.customerName;} public void setCustomerName(boolean customerName){this.customerName= customerName;}
http://geosoft.no/development/javastyle.html#Specific
is
Das Präfix sollte für boolesche Variablen und Methoden verwendet werden.
isSet
,isVisible
,isFinished
,isFound
,isOpen
Dies ist die Namenskonvention für boolesche Methoden und Variablen, die Sun für die Java-Kernpakete verwendet. Die Verwendung des Präfixes is löst ein häufiges Problem bei der Auswahl fehlerhafter boolescher Namen wie Status oder Flag. isStatus oder isFlag passen einfach nicht und der Programmierer ist gezwungen, aussagekräftigere Namen zu wählen.
Setter-Methoden für boolesche Variablen müssen das Präfix wie folgt gesetzt haben:
void setFound(boolean isFound);
Es gibt einige Alternativen zum Präfix is, die in bestimmten Situationen besser passen. Diese Präfixe haben, können und sollten:
boolean hasLicense(); boolean canEvaluate(); boolean shouldAbort = false;
hasData
, wie würde der Setter aussehen? setData(bool hasData)
Sieht für mich mit Sicherheit furchtbar falsch aus ...
has
, can
, should
Präfixe nicht Teil der Spezifikation sind. Referenz JavaBeans Specification 1.01 Abschnitt 8.3.
boolean isIsCurrent(){...}
sonst verwenden musste, beschwerte sich das Framework, mit dem das Objekt deserialisiert wurde getter not found for property isCurrent
.
Für ein benanntes Feld isCurrent
lautet die korrekte Getter- / Setter-Benennung setCurrent()
/ isCurrent()
(zumindest denkt Eclipse das), was sehr verwirrend ist und auf das Hauptproblem zurückgeführt werden kann:
Ihr Feld sollte nicht isCurrent
an erster Stelle aufgerufen werden . Is ist ein Verb und Verben sind unangemessen, um den Zustand eines Objekts darzustellen. Verwenden Sie stattdessen ein Adjektiv, und plötzlich sind Ihre Getter- / Setter-Namen sinnvoller:
private boolean current;
public boolean isCurrent(){
return current;
}
public void setCurrent(final boolean current){
this.current = current;
}
get
Präfix, wenn ein Boolean
vs is
für aboolean
Ich glaube es wäre:
void setCurrent(boolean current)
boolean isCurrent()
Vielleicht ist es an der Zeit, diese Antwort zu überarbeiten? Persönlich würde ich stimmen setActive()
und unsetActive()
(Alternativen sein können setUnActive()
, notActive()
, disable()
etc. je nach Kontext) , da „setActive“ bedeutet , dass Sie aktivieren es zu allen Zeiten, die Sie nicht tun. Es ist irgendwie kontraintuitiv, "setActive" zu sagen, aber den aktiven Zustand tatsächlich zu entfernen.
Ein weiteres Problem ist, dass Sie ein SetActive-Ereignis nicht auf CQRS-Weise spezifisch abhören können. Sie müssten ein 'setActiveEvent' abhören und in diesem Listener feststellen, ob es tatsächlich aktiv ist oder nicht. Oder bestimmen Sie natürlich, welches Ereignis beim Anruf aufgerufen werden soll, setActive()
aber das widerspricht dann dem Prinzip der Trennung von Bedenken.
Eine gute Lektüre dazu ist der FlagArgument-Artikel von Martin Fowler: http://martinfowler.com/bliki/FlagArgument.html
Ich komme jedoch aus einem PHP-Umfeld und sehe, dass dieser Trend immer mehr übernommen wird. Ich bin mir nicht sicher, wie viel das mit der Java-Entwicklung zu tun hat.
private boolean current;
public void setCurrent(boolean current){
this.current=current;
}
public boolean hasCurrent(){
return this.current;
}
has
, für BO oder einen solchen Dienst mit etwas Verarbeitung verwendet, während es für POJO ist is
. und bitte fügen Sie eine Beschreibung Ihrer Antwort hinzu.
Setter: public void setCurrent(boolean val)
Getter: public boolean getCurrent()
Für Boolesche Werte können Sie auch verwenden
public boolean isCurrent()
Wie wäre es als Setter mit:
// setter
public void beCurrent(boolean X) {
this.isCurrent = X;
}
oder
// setter
public void makeCurrent(boolean X) {
this.isCurrent = X;
}
Ich bin mir nicht sicher, ob diese Benennung für englische Muttersprachler sinnvoll ist.