Konwencje nazewnictwa specyficzne dla wersji Java

10

Muszę utworzyć adapter między dwoma programami (symulacja mechaniczna, non-cs). Zakładając, że mamy klasę o nazwie ThatThing. Muszę obsługiwać różne implementacje specyficzne dla dostawcy. Te wersje nie mają znaczących nazw (w przeciwieństwie do heli zaćmienia, indygo itp.).

1. Jak mam nazwać klasę, która powinna wyrażać numer wersji?

Uważam klasę jak ThatThing_3_6_Impl, ThatThing_3_7_Impldość niewygodne.

użytkownik802421
źródło

Odpowiedzi:

20

Użyj innej nazwy pakietu.

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

Pozwala to zachować wszystkie „rzeczy” dla poszczególnych wersji razem.

Apache Commons Lang użył tego formatu, wydając przepisane „wersje 3”.


Ponieważ musisz mieć możliwość odwoływania się do obu wersji w jednej klasie, skróciłbym nazwy do:

ThatThing36
ThatThing37

W twoim przypadku wydaje się to wystarczająco opisowe i usuwa brzydkie Impli _.

Jeremy Heiler
źródło
To brzmi dobrze. Pomyślę o tym. Chociaż w miejscu, w którym te wersje się łączą, musimy używać w pełni kwalifikowanej nazwy dla odniesień, prawda?
user802421,
Jak się spotykają? Czy używasz wstrzykiwania zależności? Tak czy inaczej, aby odpowiedzieć na pytanie, tak.
Jeremy Heiler,
Mają wiele wersji modeli danych, które zmieniają się między wydaniami. Niektóre określone podzbiory funkcji mieszają się razem. Brak obsługi bibliotek (np. Brak di, brak codegen). To jest historia 11 lat ewolucji oprogramowania :(.
user802421,
Smutny. Czy to możliwe, że version37.ThatThingprzedłużenie version36.ThatThingzłagodzi ból?
Jeremy Heiler,
Niestety są one strukturalnie różne i wymagają złożonej transformacji. To jest jak bitmapa i grafika wektorowa.
user802421,
2

To nie ma większego znaczenia. Wybierz konwencję, która wyraża wszystko, czego potrzebujesz, aby wyrazić i trzymać się jej.

Możesz użyć ThatThing3_6do „That Thing 3.6”.

compman
źródło