Конвенції про іменування, визначені для версії класу Java


10

Мені потрібно створити адаптер між двома програмами (мех. Моделювання, не-cs). Припустимо, що у нас є клас з назвою ThatThing. Мені доводиться обробляти різні реалізовані конкретні постачальники. Ці версії не мають значущих назв (на відміну від затемнення геліосів, індиго тощо).

1. Як слід назвати клас, який повинен виражати номер версії?

Я вважаю клас схожим ThatThing_3_6_Impl, ThatThing_3_7_Implдосить незручним.

Відповіді:


20

Використовуйте іншу назву пакета.

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

Це дозволяє зберегти всі "речі" для конкретних версій разом.

Apache Commons Lang використовував цей формат, коли випускав свої "версії 3" переписувань.


Оскільки вам потрібно мати можливість посилатись на обидві версії в одному класі, я би скоротив імена до:

ThatThing36
ThatThing37

У вашому випадку це, здається, є достатньо описовим, і це видаляє негарне Implі _.


Це добре звучить. Я буду думати про це. Хоча, якщо ці версії поєднуються, нам потрібно використовувати повноцінне ім'я для посилань, правда?
користувач802421

Як вони збираються разом? Ви використовуєте ін'єкцію залежності? У будь-якому випадку, щоб відповісти на ваше запитання, так.
Джеремі Хайлер

У них багато версій моделей даних, які змінюються між випусками. Деякі конкретні підмножини функцій змішуються між собою. Немає підтримки бібліотеки взагалі (наприклад, ні ді, ні кодеген). Це історія 11-річної еволюції програмного забезпечення :(.
user802421

Сумно. Чи можливо, що, version37.ThatThingподовживши version36.ThatThingйого, полегшить частину болю?
Джеремі Хайлер

На жаль, вони структурно різні і потребують складної трансформації. Це як растрова та векторна графіка.
користувач802421

2

Це не має великого значення. Виберіть умову, яка виражає все, що вам потрібно, щоб висловити та дотримуватися її.

Ви можете використати ThatThing3_6для "That Thing 3.6".

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.