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.

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.


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.