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. Verbindung
Com.myproject. Benutzer. Benutzer
Com.myproject. user. UserFactory
Wenn ich jedoch ein Paket habe, das tatsächlich eine Sammlung von Implementierungen eines einzelnen Typs enthält - wie Aufgaben, Regeln, Handler, Modelle usw., welches ist vorzuziehen?
com.myproject. Aufgaben. TakeOutGarbageTask
Com.myproject. Aufgaben. DoTheDishesTask
Com.myproject. Aufgaben. PaintTheHouseTask
oder
com.myproject. task. TakeOutGarbageTask
Com.myproject. task. DoTheDishesTask
Com.myproject. task. PaintTheHouseTask
Verwenden Sie den Plural für Pakete mit homogenem Inhalt und den Singular für Pakete mit heterogenem Inhalt.
Eine Klasse ähnelt einer Datenbankbeziehung. Eine Datenbankbeziehung sollte im Singular benannt werden, da ihre Datensätze als Instanzen der Beziehung betrachtet werden. Die Funktion einer Beziehung besteht darin, aus einfachen Daten einen komplexen Datensatz zu erstellen.
Ein Paket ist dagegen keine Datenabstraktion. Es hilft bei der Organisation von Code 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 benannt wird (wie sie oftsind ), würde ich erwarten, dass das Paket homogene Konzepte enthält.
Beispielsweise sollte ein Typ TaskCollection
anstelle von TasksCollection
heißen, da es sich um eine Sammlung handelt, die Instanzen eines Task
enthält. Ein Paket mit dem Namen com.myproject.task
bedeutet nicht, dass jede enthaltene Klasse eine Instanz einer Aufgabe ist. Möglicherweise gibt es ein TaskHandler
, ein TaskFactory
usw. Ein Paket mit dem Namen com.myproject.tasks
würde jedoch verschiedene Typen enthalten, die alle Aufgaben sind: TakeOutGarbageTask
, DoTheDishesTask
usw.
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 (type name expected but namespace found
Error). Ich habe mich damit befasst, es ist nicht angenehm und führt zu überqualifizierenden Typnamen im gesamten Code. Beispiel .