Bonjour à tous !
Je suis en train de plancher sur une partie de mon projet actuel et je n'arrive pas à voir qu'elle est la meilleure solution.
La situation actuelle :
Je dispose actuellement d'une énumération, Vegetable.java. Chaque élément de cette classe possède actuellement une quinzaine d'attributs numériques et en possèdera sans doute plus d'une cinquantaine à terme. Les valeurs de ces attributs ne peuvent pas être déduits d'autres éléments du programme, je dois rentrer les valeurs à la main (il pourrait par exemple s'agir du taux d'ensoleillement idéal, de l'humidité de la terre…). Pour l'instant, comme je ne suis qu'en phase de développement et de test, je met des valeurs random. Les rentrer à la main ne pose donc pas trop de problème.
Mes besoins :
Pour plus de clarté, je souhaite enregistrer ces valeurs dans un fichier XML, chaque vegetable possédant son propre fichier. ceci présente pour moi deux avantages : parsage facile et relecture/modification des valeurs de même.
Ma question porte sur le moment où extraire ces données.
Solution :
Je garde une Enum. J'ajoute un constructeur qui prend en paramètre le nom du fichier contenant les données pour ce vegetable.Cela donnerait quelque chose du style :
1 2 3 4 5 6 7 8 9 10 | public enum Vegetables{ CARROT(carrot.xml), TOMATO(tomato.xml); double a,b,c,...z; public Vegetables(File file){ // On extrait des infos de file this.a = ...; ... this.z = ...; } |
Techniquement, cela me semble facile à réaliser et me permet de ne pas modifier le reste de mes fichiers. Par contre, esthétiquement, je suis beaucoup moins convaincue. Je ne trouve pas ça très propre de mixer la logique de mon application avec l'extraction de ressources. De plus, si je veux rajouter un nouveau type de vegetable, je serais obliger de créer un nouveau fichier XML avec ses données (pas un soucis) ET de modifier le code pour le rajouter à l'Enum. (Néanmoins, l'ajout de nouveaux vegetables ne se ferait que lors de la mise à jour de l'application, ce n'est donc pas une opération courante ni forcément régulière).
Qu'en pensez-vous ? Une autre solution serait sans doute de passer par une HashMap ou une autre structure mais je me suis moins penchée sur le sujet.
Merci d'avance,
LineVA