Convenzioni di denominazione specifiche della versione della classe Java


10

Devo creare un adattatore tra due software (simulazione meccanica, non cs). Supponendo che abbiamo una classe chiamata ThatThing. Devo gestire varie implementazioni specifiche del fornitore. Queste versioni non hanno nomi significativi (a differenza di eclissi helios, indigo ecc.).

1. Come dovrei nominare una classe che dovrebbe esprimere il numero di versione?

Trovo classe come ThatThing_3_6_Impl, ThatThing_3_7_Implpiuttosto imbarazzante.

Risposte:


20

Usa un nome di pacchetto diverso.

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

Ciò ti consente di tenere insieme tutte le "cose" per versioni specifiche.

Apache Commons Lang ha usato questo formato per pubblicare le riscritture della "versione 3".


Dato che devi essere in grado di fare riferimento a entrambe le versioni in una singola classe, accorcerei i nomi in:

ThatThing36
ThatThing37

Nel tuo caso, questo sembra essere abbastanza descrittivo, e rimuove il brutto Imple _'s.


Questo suona bene. Ci penserò. Anche se nel posto in cui queste versioni si incontrano, dobbiamo usare un nome completo per i riferimenti, giusto?
user802421

Come si incontrano? Stai usando l'iniezione di dipendenza? Ad ogni modo, per rispondere alla tua domanda, sì.
Jeremy Heiler,

Hanno molte versioni di modelli di dati che cambiano tra le versioni. Alcuni sottoinsiemi specifici di funzionalità si stanno mescolando insieme. Nessun supporto per la libreria (es. No di, no codegen). Questa è la storia dell'evoluzione del software di 11 anni :(.
user802421

Triste. È possibile che version37.ThatThingestendendosi version36.ThatThingallevierebbe parte del dolore?
Jeremy Heiler,

Sfortunatamente, sono strutturalmente diversi e necessitano di trasformazioni complesse. È come bitmap e grafica vettoriale.
user802421,

2

Non importa molto. Scegli una convenzione che esprima tutto ciò di cui hai bisogno per esprimerla e rispettarla.

È possibile utilizzare ThatThing3_6per "That Thing 3.6".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.