Frage

Wir machen ein großes Projekt zu OSGi und fügen einige Commons-Module hinzu.Es gibt einige Diskussionen über die Benennung des Artefakts.

Eine Möglichkeit bei der Benennung des Moduls ist zum Beispiel:

cmns-definitions (für gemeinsame Definitionen), ein anderer ist cmns-definition, noch ein anderer ist cmns-def.Dies hat auch Auswirkungen auf den Paketnamen.Jetzt ist es xx.xxx.xxx.xxx.xxx.commons.definitions, wenn Sie zu wechseln cmns-def es wäre xx.xxx.xxx.xxx.xxx.commons.def.

In diesem Paket befinden sich Klassen wie Aufzählungen und andere Definitionen, die im gesamten System verwendet werden.

Ich persönlich lehne mich an cmns-definitions da es nicht nur 1 Definition im Paket gibt.Andere Leute weisen darauf hin, dass java.util hat dort zum Beispiel nicht nur 1 Dienstprogramm.Noch, java.util ist ein Abk für mich.Es kann bedeuten java-Dienstprogramm oder java-Dienstprogramme.Das gleiche passiert mit commons-lang.

Wie würden Sie das Paket benennen?Warum würdest du diesen Namen wählen?

  1. cmns-definitions
  2. cmns-definition
  3. cmns-def

Bonusfrage:Wie man etwas benennt wie cmns-exceptions?So nenne ich es.Würdest du es nennen cmns-xcpt?

BEARBEITEN:

Ich werfe meine eigenen Gedanken dazu auf, in der Hoffnung, entweder bestätigt oder widersprochen zu werden.Wenn du kannst, tu es bitte.

Meiner Meinung nach besteht der Hintergrundgrund, warum Sie etwas benennen, darin, es leichter zu verstehen, was darin enthalten ist.Oder, so Peter Kriens, es einfach zu machen, sich daran zu erinnern und Prozesse über Muster automatisieren zu können.Beides sind gültige Argumente.

Meine Argumentation ist in Bezug auf das Muster wie folgt:

1) Wenn eine Substantivierung auftritt und in der Branche bekannt ist, befolgen Sie sie bei Ihrer Benennung.
Z:"features" ist ein Fall dafür.Wir haben ein Modul namens cmns-features.Bedeutet das, dass wir viele Funktionen in diesem Modul haben?Nein.Es bedeutet "das Modul, das die "features" -Datei von Apache Karaf implementiert".
"commons" ist eine Substantivierung von "common", die in der Branche gut akzeptiert ist.Es bedeutet nicht "viele gemeinsame".Es bedeutet "Gemeinsamer Code".

Wenn ich extr-commons als Modulnamen sehe, weiß ich, dass er beispielsweise allgemeinen Code für extr (in diesem Fall Extraktion) enthält.

2) Wenn eine Anzahl von Klassen innerhalb des Moduls zusammenarbeitet, um dem Ganzen eine eindeutige "Eins und Eins" -Bedeutung zu geben, verwenden Sie die Singularform, um sie zu benennen.

Die meisten Module sind hier enthalten.Wenn ich etwas cmns-persistence-jpa nenne, meine ich, dass alle darin enthaltenen Klassen zusammenarbeiten, um die jpa-Implementierung von cmns-persistence-api bereitzustellen.Ich erwarte keine 2 Implementierungen darin, sondern tatsächlich eine Vielzahl von Klassen, die zusammen eine Implementierung ergeben.Kristallklar für mich.Nein?

3) Wenn eine Gruppierung von Klassen mit dem alleinigen Zweck durchgeführt wird, Klassen nach Affinität zu sammeln, die Klassen jedoch nicht zwecklos zusammenarbeiten, verwenden Sie den Plural.

Hier ist zum Beispiel der Fall von cmns-Definitionen (Aufzählungen, die vom gesamten System verwendet werden).

Alternativ umgeht die Verwendung einer Abkürzung das Problem, z.B.cmns-def, das auch von einem menschlichen Leser zu cmns-Definitionen "interpretiert erweitert" werden kann.Viele Leute benutzen auch "xxxx-util", was xxxx-utilities bedeutet.

Noch eine dritte Option kann verwendet werden, um Dinge zusammenzupacken, indem ein Name verwendet wird, der selbst eine Pluralisierung bedeutet.Das Wort "api" fällt mir ein, aber jedes Wort, das etwas pluralisiert, würde ausreichen, wie "pack".

Unterstützung für diese Fälle (3) sind bekannte Module wie commons-collections (mit dem Plural) oder commons-dbcp (mit Abkürzung) oder commons-lang (wieder Abkürzung) und alles, was API verwendet, um Klassen nach Affinität zusammenzufassen.

Von Apache:
commons-collections -> viele leistungsstarke Datenstrukturen, die die Entwicklung der wichtigsten Java-Anwendungen beschleunigen
commons-lang -> Host von Hilfsprogrammen für Java.lang API
commons-dbcp -> Paket mehrerer Datenbankverbindungspools

War es hilfreich?

Lösung

'es ist nur ein Name ...'

Ich habe in meiner langen Karriere festgestellt, dass diese einfachen Namen einen enormen Unterschied in der Produktivität bewirken können.Ich denke nicht, dass es einen Unterschied macht, wenn Sie verwenden Virendefinitionen, Definition, oder def solange Sie konsistent sind und Muster im Namen verwenden, die leicht zu merken sind und zur Automatisierung von Prozessen verwendet werden können.Ein Build, der auf einem konsistenten Namensschema basiert, ist unendlich einfacher zu bearbeiten als ein Build mit "netten menschlichen Display" -Namen, die ad-hoc sind und kein erkennbares Muster aufweisen.

Wenn Sie Muster verwenden, werden Namen tendenziell kürzer.Jetzt haben Leute, die mit diesen Namen arbeiten, normalerweise viel Zeit mit ihnen verbracht.Ihre Lesbarkeit ist also bei weitem nicht so wichtig wie ihr Gedächtniswert.Es stellt sich heraus, dass Abkürzungen mit 3 oder 4 Zeichen überraschend mächtig sind.Einer der Gründe dafür, dass sie gut funktionieren, ist, dass es nur eine mögliche Abkürzung gibt, während es bei längerer Laufzeit viele Kandidaten gibt.

Wie auch immer, der wichtigste Teil ist die Gesamtkonsistenz.Glück.

Andere Tipps

definitions (oder def oder definition) ist ein schlechter Name, weil er für einen Leser keine Bedeutung hat.Sie befinden sich in einer objektorientierten Welt (nehme ich an) - versuchen Sie, ihren Konventionen und Prinzipien zu folgen.Module in Maven sollten nach der größten "Abstraktion" benannt werden, die sie enthalten."Definition" ist eine Form, keine Bedeutung.

Ihre Frage ist ähnlich wie:"Welcher Klassenname ist besser FileUtilities oder FileUtils".Antwort:kein.

Grundsätzlich machen Sie mit den Definitionen und Ausnahmen eine Art API für Ihre anderen Module.Daher schlage ich vor, Definitionen, Ausnahmen zu kombinieren und Schnittstellen hinzuzufügen.Dann ist es sinnvoll, alles cmns-api zu nennen.Normalerweise bevorzuge ich die Einzahlnamen, da sie kürzer sind, aber Sie können sich frei entscheiden, da es sich nur um einen Namen handelt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top