Konvensi penamaan khusus versi kelas Java

10

Saya harus membuat Adaptor antara dua perangkat lunak (simulasi mech., Non-cs). Dengan asumsi kita memiliki kelas bernama ThatThing. Saya harus menangani berbagai implementasi khusus vendor. Versi ini tidak memiliki nama yang bermakna (tidak seperti eclipse helios, indigo dll.).

1. Bagaimana saya harus memberi nama kelas yang harus mengekspresikan nomor versi?

Saya menemukan kelas seperti ThatThing_3_6_Impl, ThatThing_3_7_Implsangat canggung.

pengguna802421
sumber

Jawaban:

20

Gunakan nama paket yang berbeda.

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

Ini memungkinkan Anda untuk menyatukan semua "hal" untuk versi tertentu.

Apache Commons Lang menggunakan format ini ketika merilis penulisan ulang "versi 3" mereka.


Karena Anda harus dapat merujuk kedua versi dalam satu kelas, saya akan mempersingkat nama menjadi:

ThatThing36
ThatThing37

Dalam kasus Anda, ini tampaknya cukup deskriptif, dan menghapus yang jelek Impldan _.

Jeremy Heiler
sumber
Ini terdengar bagus. Saya akan berpikir tentang hal ini. Meskipun di tempat versi-versi ini disatukan, kita perlu menggunakan nama yang sepenuhnya memenuhi syarat untuk referensi, bukan?
user802421
Bagaimana mereka bisa berkumpul? Apakah Anda menggunakan injeksi ketergantungan? Either way, untuk menjawab pertanyaan Anda, ya.
Jeremy Heiler
Mereka memiliki banyak versi model data yang berubah di antara rilis. Beberapa himpunan bagian fitur tertentu bercampur menjadi satu. Tidak ada dukungan perpustakaan sama sekali (mis. Tidak ada, tidak ada codegen). Ini adalah sejarah evolusi perangkat lunak 11 tahun :(.
user802421
Sedih. Mungkinkah dengan version37.ThatThingmemperpanjang version36.ThatThingakan mengurangi rasa sakit?
Jeremy Heiler
Sayangnya, mereka berbeda secara struktural dan membutuhkan transformasi yang kompleks. Ini seperti bitmap dan grafik vektor.
user802421
2

Tidak masalah. Pilih sebuah konvensi yang mengekspresikan semua yang Anda butuhkan untuk diekspresikan dan tetap menggunakannya.

Anda dapat menggunakan ThatThing3_6untuk "Hal Itu 3.6".

compman
sumber