Vermeiden Sie doppelte Bedeutungen
Sie haben absichtlich ein Wort ausgewählt, das mehr als eine Bedeutung hat, und diese erste Entscheidung ist das Problem. Es gibt eine Menge Wörter, die für Programmierer problematisch sind. Ein anderes Beispiel wäre phone
. Sie können phone
jemanden, oder Sie könnten eine phone
in der Tasche haben.
Verwenden Sie Getter und Setter
Die Standardbenennung für die meisten Objekte sind die Get- / Einstellungsmethoden für Eigenschaften.
Battery.Charge // would be a property
Battery.setCharge(value) // would set the property
Battery.getCharge() // would get the property
Eigenschaften sind Zustände, nicht Substantive
Ich glaube, Sie täuschen sich, wenn Sie Objekteigenschaften als Substantive klassifizieren, und Variablen könnten auch als Zustände betrachtet werden. Sie sind Staaten, die für den lokalen Geltungsbereich ihrer Existenz relevant sind.
Sie könnten den Wert, den sie haben, als Substantiv beschreiben, aber ich bin mir nicht sicher, ob dies in allen Fällen zutrifft.
In der OOP-Terminologie beschreiben Objekteigenschaften den Status dieses Objekts. In Ihrem Fall Battery
ist das ein Objekt und es Charge
ist ein Zustand. Das wäre also eine Eigenschaft des Objekts, aber dies hängt vom Kontext ab, in dem es verwendet wird.
Wenn Sie in der Lage sein müssen, Charge
die Batterie und auch wissen, was es aktuell Charge
ist, dann haben Sie ein Problem.
Verwenden des Bereichs zum Erzwingen des Kontexts
Der Kontext verdeutlicht, welche Bedeutung eines Wortes Sie mit einer Methode oder Eigenschaft vermitteln möchten. Der Bereich legt die Zugänglichkeit einer Eigenschaft / Methode von außerhalb des Objekts fest.
Batter._charge // a hidden private property
Battery.setCharge(value) // would set the private property
Battery.getCharge() // would get the private property
Battery.Charge() // would perform the Charge action
Methoden sind Verben
Sie können die Methode eines Objekts als Verb beschreiben, aber das Wort Aktion ist besser geeignet. In der OOP-Terminologie führen Sie Aktionen für Objekte mithilfe ihrer Methoden aus. Es ist eine schlechte Form, die Eigenschaft eines Objekts von außerhalb des Objekts zu ändern. Es wird empfohlen, eine Methode aufzurufen, die die erforderlichen Aktionen ausführt, durch die sich der Status ändert.
Das Wort Charge
ist ein Verb, aber es ist auch ein Substantiv. Beim Aufruf der Methode einer Aktion wird deutlich, dass das Verb verwendet wird Battery.Charge(....)
.
Der Kontext ist jedoch sehr wichtig. Das Wort Charge()
ist zwar ein Verb, aber nicht so aussagekräftig wie startCharging()
.
Gültige Methoden Battery
könnten Charging
, Discharging
, setCharge
, getCharge
, hasCharge
, Discharge
und Charged
.
Einfache Ein-Wort-Methoden geben ihre Handlungen oft nicht explizit an, aber es gibt Fälle wie open
und in close
denen wenig Erklärung erforderlich ist.
Es gibt also keine richtige Antwort darauf, wie diese Arten von Eigenschaften / Methoden benannt werden sollen. Mit der Ausnahme, dass Sie die oben genannten Techniken mit Bedacht anwenden müssen, um sicherzustellen, dass keine Verwirrung herrscht.