Ich lese Clean Code von Onkel Bob. Da ich kein Muttersprachler bin, konnte ich folgende Aussage nicht verstehen:
Klassen und Objekte sollten Namen Substantiv oder Nominalphrase haben wie
Customer
,WikiPage
,Account
, undAddressParser
. Vermeiden Sie Wörter wieManager
,Processor
,Data
oderInfo
im Namen einer Klasse. Ein Klassenname sollte kein Verb sein.
Wie ich weiß, keiner von dem Manager
, Processor
, Data
und Info
ist ein Verb, ist es nicht? Was ist der eigentliche Punkt, den er hervorheben möchte?
coding-style
terminology
code-quality
naming
mmdemirbas
quelle
quelle
Antworten:
Die drei Punkte sind getrennt:
Klassennamen sollten Substantive oder Nominalphrasen sein . Dies bedeutet, dass der Name der Klasse etwas sein sollte, das Gegenstand eines Verbs wäre. Bei objektorientiertem Design sind Methoden die Verben, die auf dem Objekt ablaufen, für das die Klasse eine Repräsentation ist.
Einige Wörter sollten vermieden werden.
Manager
zeigt eine mögliche Gottklasse an .Info
undData
kann einen Dummy-Datencontainer anzeigen. Solche Wörter können auf eine schlechte Modellierung des Problemraums hinweisen.Verben sollten niemals Klassennamen sein. Siehe den ersten Punkt - Klassen modellieren Dinge, Methoden modellieren Aktionen.
quelle
Er versucht zwischen Dingen (Substantiven) und Handlungen (Verben) zu unterscheiden. Im konventionellen objektorientierten Design verstehen wir Klassen als Dinge und ihre Methoden als die Aktionen, die diese Dinge ausführen können. Um zu verwalten ist zu kümmern oder zu koordinieren, während Manager eine Person oder Sache, die verwaltet.
In Einführungsbüchern wird dies in der Regel auf die einfachsten und naheliegendsten Begriffe reduziert, die wie bei einer Klasse mit dem Namen Dog mit den Methoden Bark und Bite möglich sind . In Klassen der realen Welt ist die Unterscheidung oft etwas subtiler, aber immer noch vorhanden. Ich glaube jedoch, dass Onkel Bob darauf hinweist, dass Manager zwar ein Substantiv ist, aber viel Aufmerksamkeit auf das richtet, was der Manager tut, und nicht auf das, was es ist - es ist ein zu vages Wort, um genau zu beschreiben, was es ist verwaltet werden oder wie.
quelle
Account
ist ein Objektbalance
ein Feld undtransfer
eine Methode. Aber das richtige Design wäre:Transfer
Ist ein Objekt,account
ist ein Feld undbalance
ist eine Methode. So werden Bankensysteme tatsächlich implementiert und so funktionierte Banking tatsächlich vor Computern.