it-swarm.dev

Sollten Paketnamen Singular oder Plural sein?

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

245
Nicole

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.

314
Matthew Rodatus

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 .

1
Den