Conventions de dénomination spécifiques à la version de classe Java

10

Je dois créer un adaptateur entre deux logiciels (simulation mécanique, non-cs). En supposant que nous ayons une classe nommée ThatThing. Je dois gérer diverses implémentations spécifiques au fournisseur. Ces versions n'ont pas de noms significatifs (contrairement à eclipse helios, indigo etc.).

1. Comment dois-je nommer une classe qui devrait exprimer le numéro de version?

Je trouve la classe comme ThatThing_3_6_Impl, ThatThing_3_7_Implassez maladroite.

user802421
la source

Réponses:

20

Utilisez un nom de package différent.

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

Cela vous permet de garder toutes les «choses» pour des versions spécifiques ensemble.

Apache Commons Lang a utilisé ce format lors de la publication de leurs réécritures de "version 3".


Étant donné que vous devez pouvoir référencer les deux versions dans une seule classe, je raccourcirais les noms à:

ThatThing36
ThatThing37

Dans votre cas, cela semble être assez descriptif, et cela supprime le laid Implet _le s.

Jeremy Heiler
la source
Ça semble bon. Je vais y penser. Bien qu'au lieu où ces versions se réunissent, nous devons utiliser un nom complet pour les références, non?
user802421
Comment se réunissent-ils? Utilisez-vous l'injection de dépendance? Quoi qu'il en soit, pour répondre à votre question, oui.
Jeremy Heiler
Ils ont de nombreuses versions de modèles de données qui changent entre les versions. Certains sous-ensembles spécifiques de fonctionnalités se mélangent. Pas de support de bibliothèque du tout (par exemple pas de di, pas de codegen). C'est l'histoire de 11 ans d'évolution du logiciel :(.
user802421
Triste. Est-il possible qu'en ayant version37.ThatThingprolongé version36.ThatThingsoulagerait une partie de la douleur?
Jeremy Heiler
Malheureusement, ils sont structurellement différents et nécessitent une transformation complexe. C'est comme un bitmap et un graphique vectoriel.
user802421
2

Cela n'a pas beaucoup d'importance. Choisissez une convention qui exprime tout ce dont vous avez besoin pour l'exprimer et vous y tenir.

Vous pouvez utiliser ThatThing3_6pour "That Thing 3.6".

compman
la source