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 :

Constante private static final avec getter ou public static final sans getter


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2011
    Messages : 32
    Points : 33
    Points
    33
    Par défaut Constante private static final avec getter ou public static final sans getter
    Bonjour à toutes et à tous,

    Je me pose la question qui est dans le titre.

    Lors de l'utilisation d'une constante (dans une class Utilities par exemple) qui restera définitivement immuable:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private static final int NB_HEURES_JOURS = 24;
    ...
    public static int getNbHeuresJours()
    {
        return NB_HEURES_JOURS;
    }
    Dans une autre classe, je vais donc récupérer ma constante comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private int heuresParJour = Utilities.getNbHeuresJours();
    Vu que sur terre une journée est faite de 24 heures, 24 ne changera jamais mais jamais.
    Dans ce cas précis et puisque 24 ne changera jamais, serait-ce une pratique déconseillée ou mauvaise de simplifier en supprimant le getter et en passant ma constante en public dans ma classe Utilities comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public static final int NB_HEURES_JOURS = 24;
    ...
    Et en la récupérant ailleurs comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private int heuresParJour = Utilities.NB_HEURES_JOURS;
    Merci beaucoup pour vos avis de bonnes pratiques et bonnes journée à toutes et à tous,
    Eric.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Citation Envoyé par flyeric Voir le message
    Vu que sur terre une journée est faite de 24 heures, 24 ne changera jamais mais jamais.
    Peu importe, c'est surtout le fait que la variable soit static et final. Autant faire ça et ne pas alourdir avec une méthode.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static final int NB_HEURES_JOURS = 24;
    Cependant, il y aurait une raison qui pourrait pousser à faire une méthode et à faire la static final private. Lors de la compilation, la valeur d'une public static final est copiée là où elle est utilisée. Si tu modifies la valeur et que tu ne recompiles pas les classes qui l'utilisent, elles continueront à utiliser l'ancienne valeur, ce qui causera des dysfonctionnements. Tu peux avoir envie ou besoin de l'éviter.

    A noter que ce n'est pas forcément vrai qu'un nombre d'heures pas jour soit 24. A cause de l'heure d'hiver/heure d'été (le DST, Daylight saving time), et donc une méthode pourrait avoir son intérêt, par exemple, avec 3 constantes dont le choix est fait par la date et la locale.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static int getNombreHeureJour(Date date, Locale locale)
    D'ailleurs, si le but est de faire des calculs de temps entre deux dates, il vaut mieux passer par les API Java, qui gèrent tout ça (package java.time).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2011
    Messages : 32
    Points : 33
    Points
    33
    Par défaut
    Bonjour Joel et merci beaucoup pour ton explication.

    Non, ce n'est pas pour jouer avec les dates. En fait, c'était juste un exemple mais comme j'ai plusieurs constantes immuables, je me disais justement que de les déclarer public static final m'éviterait d'avoir des getter superflux sauf dans le cas que tu as précisé.
    Alors merci beauoup pour ta réponse.

    Bonne journée,
    Eric.

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 15/01/2011, 08h26
  2. Protection d'un tableau public static final
    Par sachem dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 07/02/2009, 21h20
  3. Réponses: 2
    Dernier message: 25/04/2007, 20h55
  4. [debutant] get image avec une variable non static
    Par laguna dans le forum Langage
    Réponses: 2
    Dernier message: 06/03/2006, 15h57
  5. Réponses: 6
    Dernier message: 25/01/2006, 14h19

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