IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

[String] Déclaration de constantes


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut [String] Déclaration de constantes
    Bonjour la compagnie,

    Une petite question moins facile qu'elle n'en a l'air..

    Voila, régulièrement dans un projet on utilise des constantes String, parfois elles ne sont utilisées qu'une fois et sont donc déclarées a l'endroit ou on les utilise et point final (genre la clé pour accéder a une propriété).

    Récemment mon chef de projet qui s'ennuie (donc qui m'ennuie ) m'a demandé de déclarer toutes ces constantes String au début de la classe histoire qu'on les retrouve plus vite si on veut les changer.

    Moi ça me pose de petits problèmes cette approche.

    1 - C'est bien gentil de modifier rapidement une constante mais si on ne voit pas le code ou elle est utilisée c'est risqué, on pourrait modifier la mauvaise par accident ..

    2 - si la chaine est utilisée dans 2 classes différentes on doit la définir dans les 2 classes, pas super cool, surtout qu'il faudra se rappeler de changer toutes les définitions de cette chaine dans toutes les classes.

    J'aimerais savoir si vous connaissez de bonnes pratiques éprouvées pour ce genre de chose ?

    Il y a bien la solution d'une interface contenant la déclaration de toutes les constantes, mais sur un gros projet c'est bien fouilli a la fin et pour savoir quelle constante correspond a quoi ..

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  2. #2
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Par défaut
    C'est plus une question qu'une reponse que je me permets de te metre la mais

    je vois pas bien le soucis (peut etre car je suis assez novice)
    que tu declare ta constante au debut de ta classe ou la ou tu t'en sers, la ou les methodes pour les changer reste les memes non?

    le seul truc c'est qu'il faut fair atention en ecrivant les methodes suivantes
    pour bien changer la constante qu'il faut mais en metant en comentaire quelques explications pour les constantes a leur declaration sa devrais le faire je pense.

    Encore une fois c plus une question qu'une reponse car je n'ai peut etre pas bien compris la problematique dans quel cas je te pris de m'excuser d'avence et d'avoir la gentillesse si tu a le temps de me l'explique un peux ^^

    merci d'avence

  3. #3
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Il faut faire bien attention à rester dans le paradigme objet. Faire une interface remplie de constante, c'est fonctionnel, pas objet. Une constante est le plus souvent associé à un état d'un objet précis. Elle aura donc sa place dans la classe de cet objet.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  4. #4
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Bon je vais illustrer par un exemple, ce sera plus clair:

    Dans mon projet j'accède a différentes propriétés, les noms de ses propriétés sont des constantes chaines ("my.prop" par exemple) et mon chef me casse les pieds a vouloir que je mette des déclarations de chaines au début de la classe.

    Ca ne change rien, pire je trouve ça dangereux, si une propriétés est utilisée dans deux classes, il y a de fortes chances que l'on pense a changer un fichier mais pas l'autre.

    La je ne parle pas de paradygme objet, je parle d'une astuce intelligente qui permettrait d'avoir un code facilement maintenable et dont les constantes chaines seraient facilement accessible (pour que mon chef soit heureux).
    Le tout c'est de gagner en qualité et en clarté.

    Une interface ou une classe abstraite m'irait très bien. C'est juste que c'est un poil foutoir et a la fin c'est dur de s'y retrouver s'il y a beaucoup de constantes.

    J'ai eu une idée (si si ca m'arrive) pour organiser ca, une classe/interface (peu importe je pense) contenant des enums qui serviraient de catégories pour les constantes.

    Par exemple j'aurais une enum PropertyKeys avec une méthode getValue(). Pour accéder a la clé "application.log.file" par exemple je ferai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PropertyKeys.LOG_FILE.getValue();
    Ouaip je sais ça complique un peu l'écriture mais on regroupe les constantes, ce que veux mon boss, moi je n'apprécie guère la technique, je reste persuadé qu'il vaut mieux réduire la distance entre la déclaration de la constante et son utilisation pour faciliter la lecture/maintenance de la chose..

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  5. #5
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Je pencherais également pour l'utilisation d'une enum. En effet, rien que le fait d'avoir la même constante déclarée dans deux classes différentes me paraît très gênant (pour les risques d'oubli que tu as mentionné en cas de modification de la valeur) .

    Citation Envoyé par bulbo
    je reste persuadé qu'il vaut mieux réduire la distance entre la déclaration de la constante et son utilisation pour faciliter la lecture/maintenance de la chose.
    Je ne suis pas convaincu, principalement pour la raison de la "multi déclaration" qui est, à mon humble avis, beaucoup plus dangereuse et risquée tandis que la lecture/maintenance de la chose peut être facilitée avec des commentaires généreux.

    Remarque : pour l'enum, tu peux redéfinir la méthode toString() plutôt que de créer une nouvelle méthode getValue() .
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  6. #6
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Pour les risques d'oubli:

    1 - quel est l'intérêt de modifier le nom d'une clé existante ? Donc les chances que ça se produise un jour ...

    2 - Si je dois changer une clé, dans mon IDE préféré je fais un find et zou..

    Pour la méthode toString() j'y ai pensé, il ne risque pas d'y avoir un effet pernicieux vu que normalement cela retourne le nom utilisé lors de la création de la valeur de l'enum ?

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. déclaration de constantes dans les packages
    Par micamel dans le forum PL/SQL
    Réponses: 6
    Dernier message: 02/03/2010, 17h15
  2. [2003] Déclaration de constante pour tout le classeur
    Par rtg57 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/01/2009, 17h09
  3. déclaration de constante
    Par DiverSIG dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/06/2007, 08h07
  4. Déclaration de constantes
    Par gilv57 dans le forum C
    Réponses: 2
    Dernier message: 13/12/2006, 21h35
  5. Pchar , string .. déclaration..
    Par petitcoucou31 dans le forum Langage
    Réponses: 8
    Dernier message: 01/05/2006, 16h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo