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
quelle
Antworten:
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
TaskCollection
anstelle von benannt werdenTasksCollection
, da es sich um eine Auflistung handelt, die Instanzen von a enthältTask
. Ein Paket mit dem Namencom.myproject.task
bedeutet nicht, dass jede enthaltene Klasse eine Instanz einer Aufgabe ist. Es könnte eine seinTaskHandler
, einTaskFactory
usw. Ein Paket mit dem Namencom.myproject.tasks
würden jedoch verschiedene Arten enthalten , die alle Aufgaben sind:TakeOutGarbageTask
,DoTheDishesTask
usw.quelle
beans
ist plural,java.beans
enthält jedoch alle Arten von Klassen, die sich auf JavaBeans beziehen.java.beans
.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 found
Fehler). Ich habe mich damit befasst, es ist nicht angenehm und führt zu überqualifizierten Typnamen im gesamten Code. Beispiel .quelle