Convenções de Nomenclatura Específicas da Versão da Classe Java


10

Eu tenho que criar um adaptador entre dois softwares (simulação mecânica, não-cs). Supondo que temos uma classe chamada ThatThing. Eu tenho que lidar com várias implementações específicas do fornecedor. Essas versões não têm nomes significativos (ao contrário do eclipse helios, indigo etc.).

1. Como devo nomear uma classe que deve expressar o número da versão?

Acho classe como ThatThing_3_6_Impl, ThatThing_3_7_Implbastante estranho.

Respostas:


20

Use um nome de pacote diferente.

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

Isso permite manter todas as "coisas" para versões específicas juntas.

O Apache Commons Lang usou esse formato ao liberar suas "versões 3" reescritas.


Como você precisa ser capaz de fazer referência a ambas as versões em uma única classe, reduzi os nomes para:

ThatThing36
ThatThing37

No seu caso, isso parece ser bastante descritivo e remove os feios Imple _os.


Isso parece bom. Vou pensar sobre isso. Embora no local em que essas versões se reúnem, precisamos usar um nome completo para as referências, certo?
user802421

Como eles se reúnem? Você está usando injeção de dependência? De qualquer maneira, para responder sua pergunta, sim.
Jeremy Heiler 12/08

Eles têm muitas versões de modelos de dados que são alteradas entre os releases. Alguns subconjuntos específicos de recursos estão se misturando. Nenhum suporte de biblioteca (por exemplo, sem di, sem codegen). Esta é uma história de 11 anos de evolução do software :(.
user802421

Triste. É possível que, ao version37.ThatThingestender version36.ThatThing, aliviasse um pouco da dor?
precisa saber é o seguinte

Infelizmente, eles são estruturalmente diferentes e precisam de uma transformação complexa. É como bitmap e gráfico de vetor.
user802421

2

Não importa muito. Escolha uma convenção que expresse tudo o que você precisa para expressar e cumpri-la.

Você pode usar o ThatThing3_6"That Thing 3.6".

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.