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 :

Utiliser les getters & setters en interne ?


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 104
    Par défaut Utiliser les getters & setters en interne ?
    Hey,
    j'ai pris l'habitude d'utiliser les getters & setters à l'intérieure même de la classe... je trouve cela plus "propre".
    Bonne ou mauvaise habitude ? Ou tout le monde s'en fout ?

  2. #2
    Membre Expert
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Par défaut
    Hello,

    Ca doit compliquer la lecture du code, non?

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 104
    Par défaut
    Moi je trouve pas en fait
    Ca vient directement de l'IDE en fait mais les getter/setter est en gras, donc je trouve ça plus lisible.

    edit: fucking touche tab

  4. #4
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Je ne sais pas si ça fait réellement partie des "bonnes pratiques de codage", mais je te soutiens dans ta démarche: j'ai pris l'habitude de faire de même.

    Je trouve cela plus sécurisé. Je mets toujours l'attribut en "private", et je n'y accède que par des accesseurs.

    En développement, je trouve que cela a un gros avantage: sous Eclipse, il suffit de faire un "call hierarchy" sur les accesseurs pour savoir quelle méthode lit ou écrit l'attribut en question. Lorsqu'on a un problème d'incohérence sur cet attribut, on identifie ainsi beaucoup plus facilement qui peut en être responsable.
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  5. #5
    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
    C'est plutot une bonne pratique, ainsi si ton setter verifie l'integrite de la variable par exemple, cela sera fait aussi bien en interne qu'en externe et en cas de modification de cette verif tu n'as a la faire qu'a un seul endroit.

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

  6. #6
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Totalement d'accord ! C'est vrai que ça "alourdit" un peu le code, mais pas tant que ça. Et ça permet vraiment de centraliser des règles de validation ou de la gestion d'événements ou encore d'autres choses dont tu n'as pas forcément besoin de suite mais dont le besoin pourrait apparaître ultérieurement

  7. #7
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    C'est bien comme ça si tu as besoin de modifier l'affectation, tu ne le fais qu'une fois.
    Par contre, il faut faire attention si tu fais des objets non finaux, les méthodes get et set peuvent être redéfinies dans des sous-classes...

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    956
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 956
    Par défaut
    Se méfier tout de même des appels récursifs : un accesseur fait appel à une méthode qui elle même fait appel à l'accesseur en question, et on se retrouve avec un dépassement de pile.

  9. #9
    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
    Citation Envoyé par ®om
    C'est bien comme ça si tu as besoin de modifier l'affectation, tu ne le fais qu'une fois.
    Par contre, il faut faire attention si tu fais des objets non finaux, les méthodes get et set peuvent être redéfinies dans des sous-classes...
    il y a aussi possibilite d'effets de bords ennuyeux si les getters/setters s'appellent entre eux.

    J'ai eu un cas d'attributs qui s'excluaient l'un l'autre, genre si l'un est present l'autre doit etre null et inversement. Si tu fais ca dans chacun des setters bah tu te retrouves avec une belle recursion infinie pour peu que tu testes pas si l'argument du setter est null ou pas.

    Mais en gros c'est toujours mieux d'utiliser les get/set si ils existent, pour la declaration en 'final', bof je suis pas adepte, surtout qu'en general l'attribut etant declare en private, le final n'appporte pas grand chose de plus.

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

Discussions similaires

  1. Les Getters et Setters en Java
    Par faressam dans le forum Débuter avec Java
    Réponses: 10
    Dernier message: 18/04/2012, 16h40
  2. Changer le refactor pour les getters and setters
    Par chezlui dans le forum NetBeans
    Réponses: 2
    Dernier message: 05/12/2011, 10h21
  3. Réponses: 1
    Dernier message: 03/12/2010, 22h00
  4. Réponses: 5
    Dernier message: 01/03/2010, 16h01
  5. [Postsharp] Manager les getter et setter d'une propriété
    Par anthyme dans le forum Framework .NET
    Réponses: 4
    Dernier message: 13/01/2009, 11h19

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