Benennung der Klassen: Singular oder Plural? [geschlossen]

58

Es fällt mir immer schwer, bei Klassennamen zwischen Singular- und Pluralform zu wählen:

CustomerRepository vs. CustomersRepository
CustomerService vs. CustomersService
CustomerController vs. CustomersController

Und für zusammengesetzte Namen ist es noch schwieriger:

OrderCustomerRepository vs. OrderCustomersRepository vs. OrdersCustomersRepository

Welchen Ansatz bevorzugen Sie und warum?

SiberianGuy
quelle
Würde die Klasse ein Repository für mehrere Kunden enthalten? Wenn es ein Repository für einen Kunden ist ...
JeffO
2
@ Jeff O, Repository kann GetCustomerById und GetCustomers Methoden gleichzeitig enthalten
SiberianGuy
2
Bei der Datenmodellierung sollte ein Tabellenname singulär sein. Wenn Ihre Anwendung Domänenklassen verwendet, die 1 bis 1 Ihres Datenmodells entsprechen, ist es möglicherweise eine gute Idee, die Benennung singulär zu halten. Natürlich ist das Zuordnen von Klassen zu Tabellen in der Form 1-1 möglicherweise nicht die beste Methode, um Ihr Objektmodell für eine OO-Anwendung zu erstellen, aber dies steht außer Frage.
NoChance

Antworten:

73

Das einzige, was ich pluralisiere, sind Sammlungen.

foreach (var customer in customers)
{
    // do something with customer
}

Alle Ihre Beispiele sind einzelne Objekte, daher werden sie nicht pluralisiert. Ja, die Namen beziehen sich auf Objekte, die möglicherweise mehrere Instanzen haben, aber alles, was Sie im Namen wissen müssen, ist die Objektentität (dh der Kunde).

In all Ihren Beispielen ist der Singular die richtige Form. Erleichtert das Leben.

Robert Harvey
quelle
2
Ich würde customerCollectionfür Sammlungen verwenden, aber für den Rest stimme ich zu. Dies ist eine bewährte Methode für das Datenbankdesign und funktioniert auch im Code recht gut.
28.
12
Ich mag Worte wie "Sammlung" hier nicht. Englisch hat eine sehr gute Möglichkeit, sich auf eine Sammlung von Dingen mit Hilfe von Pluralformen zu beziehen.
Gort the Robot
Statt Collectionwie wäre es Iterator?
Julian
@Julian Eine IteratorArt Co-Routine anstatt einer Datenstruktur zum Speichern mehrerer Objekte, oder?
Wilson
64

Verwenden Sie Singular. Das Werkzeug zum Drehen von Schrauben heißt "Schraubendreher", nicht "Schraubendreher".

Pluralisieren Sie jedoch Ihre Methoden- und Eigenschaftsnamen entsprechend, um anzugeben, ob ein Wert oder eine Auflistung von ihnen zurückgegeben wird.

back2dos
quelle
7

Auf jeden Fall einzigartig. Sie erstellen kein Objekt von People, Sie erstellen eine Sammlung von PersonObjekten. Das einzige Mal , würde ich Plurale verwenden würde für statische Klassen, dh SupportServices, StringUtilsetc. jedoch in diesem Fall die Klasse wirkt mehr als Namespace als alles andere.

rauben
quelle
1
Und zu denken, die ganze Zeit habe ich die Kollektionen von Peoples benutzt!
Jordanien
2
Liste <Person> Leute ... scheint mir in Ordnung zu sein, @Jordan.
StevenV
1

Denken Sie daran, eine Klasse ist eine Vorlage für ein Objekt. Denken Sie also an das Objekt, auf das Sie sich beziehen.

Häufig handelt es sich um eine singuläre Entität, insbesondere wenn es sich um eine ORM-Entität handelt. Manchmal könnte es eine Sammlung sein.

Ich glaube, die Antwort ist kontextspezifisch.

indisch
quelle