Java-Klassenversionsspezifische Namenskonventionen

10

Ich muss einen Adapter zwischen zwei Software (Mech. Simulation, Non-Cs) erstellen. Angenommen, wir haben eine Klasse namens ThatThing. Ich muss verschiedene herstellerspezifische Implementierungen durchführen. Diese Versionen haben keine aussagekräftigen Namen (im Gegensatz zu Eclipse Helios, Indigo usw.).

1. Wie soll ich eine Klasse benennen, die die Versionsnummer ausdrücken soll?

Ich finde Klasse wie ThatThing_3_6_Impl, ThatThing_3_7_Implziemlich umständlich.

user802421
quelle

Antworten:

20

Verwenden Sie einen anderen Paketnamen.

com.example.version36.ThatThing
com.example.version37.ThatThing

Auf diese Weise können Sie alle "Dinge" für bestimmte Versionen zusammenhalten.

Apache Commons Lang verwendete dieses Format, als sie ihre "Version 3" -Rewrites veröffentlichten.


Da Sie in der Lage sein müssen, beide Versionen in einer einzigen Klasse zu referenzieren, würde ich die Namen verkürzen auf:

ThatThing36
ThatThing37

In Ihrem Fall scheint dies beschreibend genug zu sein, und es entfernt das Hässliche Implund _'s.

Jeremy Heiler
quelle
Das klingt gut. Ich denke drüber nach. An der Stelle, an der diese Versionen zusammenkommen, müssen wir für die Referenzen einen vollständig qualifizierten Namen verwenden, oder?
user802421
Wie kommen sie zusammen? Verwenden Sie die Abhängigkeitsinjektion? So oder so, um Ihre Frage zu beantworten, ja.
Jeremy Heiler
Sie haben viele Versionen von Datenmodellen, die sich zwischen den Releases ändern. Einige spezifische Untergruppen von Funktionen werden miteinander gemischt. Überhaupt keine Bibliotheksunterstützung (zB kein di, kein Codegen). Dies ist die Geschichte von 11 Jahren Software-Evolution :(.
user802421
Traurig. Ist es möglich, dass durch eine version37.ThatThingVerlängerung version36.ThatThingein Teil der Schmerzen gelindert wird?
Jeremy Heiler
Leider sind sie strukturell unterschiedlich und erfordern eine komplexe Transformation. Es ist wie Bitmap und Vektorgrafik.
user802421
2

Es spielt keine große Rolle. Wählen Sie eine Konvention, die alles ausdrückt, was Sie zum Ausdrücken benötigen, und bleiben Sie dabei.

Sie könnten ThatThing3_6für "That Thing 3.6" verwenden.

compman
quelle