Sollten Paketnamen Singular oder Plural sein?

227

Insbesondere in Bibliotheken enthalten Pakete häufig Klassen, die nach einem einzigen Konzept organisiert sind. Beispiele: xml, sql, user, config, db . Ich denke, wir alle fühlen uns ziemlich natürlich, dass diese Pakete im Singular korrekt sind .

com.myproject. xml .Element
com.myproject. sql .Connection
com.myproject. Benutzer .Benutzer
com.myproject. Benutzer .UserFactory

Wenn ich jedoch ein Paket habe, das tatsächlich eine Sammlung von Implementierungen eines einzigen Typs enthält - wie z. B. Tasks, Regeln, Handler, Modelle usw. - was ist vorzuziehen?

com.myproject. Aufgaben .TakeOutGarbageTask
com.myproject. Aufgaben .DoTheDishesTask
com.myproject. Aufgaben .PaintTheHouseTask

oder

com.myproject. task .TakeOutGarbageTask
com.myproject. Aufgabe .DoTheDishesTask
com.myproject. Aufgabe .PaintTheHouseTask

Nicole
quelle
5
singular wie datenbanktabellennamen sollten immer singular sein, jedoch aus verschiedenen gründen. Schauen Sie sich eine gängige Standardbibliothek wie Java oder Python an.
@Jarrod Roberson: Bitte poste deine Antwort als Antwort, damit wir sie richtig bewerten können.
S.Lott,
@ Jarrod wird einige Beispiele brauchen, da in Standardbibliotheken die meisten Klassen in die erste Kategorie fallen, die ich aufgelistet habe.
Nicole
@Renesis Schau dir meine aktualisierte Antwort an.
Matthew Rodatus
@Matthew - ich mag es. Sie haben ausgedrückt, was ich vermutet habe, waren sich aber nicht sicher, wie Sie kodifizieren sollten.
Nicole

Antworten:

293

Verwenden Sie den Plural für Pakete mit homogenem Inhalt und den Singular für Pakete mit heterogenem Inhalt.

Eine Klasse ähnelt einer Datenbankrelation. Eine Datenbankrelation sollte im Singular benannt werden, da ihre Datensätze als Instanzen der Relation betrachtet werden. Die Funktion einer Beziehung besteht darin, aus einfachen Daten einen komplexen Datensatz zu erstellen.

Ein Paket ist hingegen keine Datenabstraktion. Es hilft bei der Organisation des Codes und der Lösung von Namenskonflikten. Wenn ein Paket im Singular benannt ist, bedeutet dies nicht, dass jedes Mitglied des Pakets eine Instanz des Pakets ist. es enthält verwandte, aber heterogene Konzepte. Wenn es im Plural genannt wird (wie sie oft sind ), würde ich erwarten , dass das Paket homogene Konzepte enthält.

Beispielsweise sollte ein Typ TaskCollectionanstelle von benannt werden TasksCollection, da es sich um eine Auflistung handelt, die Instanzen von a enthält Task. Ein Paket mit dem Namen com.myproject.taskbedeutet nicht, dass jede enthaltene Klasse eine Instanz einer Aufgabe ist. Es könnte eine sein TaskHandler, ein TaskFactoryusw. Ein Paket mit dem Namen com.myproject.taskswürden jedoch verschiedene Arten enthalten , die alle Aufgaben sind: TakeOutGarbageTask, DoTheDishesTaskusw.

Matthew Rodatus
quelle
13
Eine ähnliche Frage finden Sie unter english.stackexchange.com/q/25713 . Eine Kategorie ist analog zum Singular und ein Typ ist analog zum Plural.
Matthew Rodatus
4
Der von Ihnen angegebene Link zeigt eine Ausnahme von dieser Regel. beansist plural, java.beansenthält jedoch alle Arten von Klassen, die sich auf JavaBeans beziehen.
SkyDan
Gute Antwort, aber ich stimme der Logik der Datenbankbeziehung nicht zu. Beziehungen in einer ERD sind singulär, weil sie Beziehungen zwischen Entitäten anzeigen. Tabellen sind eine physische Implementierung der Relationen, und sie enthalten mehrere Zeilen und sollten daher mehrere IMO sein. Die Antwort auf "Was ist in dieser Tabelle?" ist "Benutzer" nicht "Benutzer". Zugegeben, es scheint, dass singuläre Namen in der Unternehmenswelt (C #, Java) häufiger vorkommen als in Communities wie Ruby, Python, Javascript und PHP.
Ryeguy
4
@ SkyDans Kommentar weist auf etwas sehr Wichtiges hin, das hier völlig übersehen wird. Mir scheint, dass die Pluralbenennung von "java.beans" tatsächlich ein Fehler war und stattdessen "java.bean", singular, hätte heißen sollen.
Vicky Chijwani
6
@VickyChijwani @SkyDan Da JavaBeans ™ ein Warenzeichen ist, wollten sie den Namen wahrscheinlich so lassen, wie er ist, um sich auf die Technologie selbst zu beziehen, und daher verwendeten sie ihn java.beans.
Hejazi
1

Dies hängt wahrscheinlich von einer bestimmten Sprache ab. In .NET (C #) sollte es auf jeden Fall ein Plural sein, wenn eine Namenskollision vom Typ Namespace wahrscheinlich ist (der type name expected but namespace foundFehler). Ich habe mich damit befasst, es ist nicht angenehm und führt zu überqualifizierten Typnamen im gesamten Code. Beispiel .

Den
quelle