Kurze Antwort:
- Methodennamen werden nicht übernommen, um die interne Implementierung, sondern das erwartete Verhalten widerzuspiegeln.
Lange Antwort:
haveChildren()
sollte benannt werden hasChildren()
.
Ich sehe es auch nicht hasChildren()
als notwendig an, der Getter für ein Mitglied der Booleschen Klasse zu sein. Ich schätze, eine solche Methode würde herausfinden, ob ein Mitglied vom Typ Collection
leer ist oder nicht .
Der Standardname, den eine IDE für generierte Getter und Setter verwendet, ist kein in Stein gemeißeltes Gesetz.
Ein weiterer Punkt: Schnittstellen haben Namen für noch zu implementierende Methoden.
Wenn Methodennamen verwendet würden, um die interne Implementierung widerzuspiegeln, wie könnte jemand jemals eine Schnittstelle entwerfen? Schnittstellen haben weder eine Implementierung, noch wissen sie vorher, was die Implementierer unter der Haube tun werden.
Nehmen wir zum Beispiel die Iterator
Oberfläche in Java.
Iterator
Selbst wenn Sie ein boolesches Mitglied namens implementieren , müssen next
Sie es nicht hasNext()
in isNext()
oder umbenennen isHavingNext()
. Das ist ein Implementierungsdetail. Tatsächlich habe ich implementiert, Iterator
und was ich tue, ist, ein Mitglied des Typs zu haben, von dem meine Klasse eine Liste mit dem Namen hat next
(kein Boolescher Wert ). hasNext()
dann kehrt zurück next!=null
.
Siehe dazu auch:
class patient {
private boolean pulse;
private boolean breaths:
public boolean isDead(){ return (!pulse & !breaths);}
}
Beachten Sie, dass dies isDead()
kein normaler Getter ist.
Nutzen Sie die Produktivitätstools von IDEs für das, was sie sind.
parent
würde es funktionieren.