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 du Club
    Inscrit en
    Septembre 2006
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 104
    Points : 64
    Points
    64
    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 expérimenté
    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
    Points : 1 638
    Points
    1 638
    Par défaut
    Hello,

    Ca doit compliquer la lecture du code, non?

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 104
    Points : 64
    Points
    64
    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 : 41
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    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.

  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
    Points : 1 937
    Points
    1 937
    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

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

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    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
    Points : 3 080
    Points
    3 080
    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 chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    951
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 951
    Points : 1 862
    Points
    1 862
    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
    Points : 1 937
    Points
    1 937
    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

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, 17h40
  2. Changer le refactor pour les getters and setters
    Par chezlui dans le forum NetBeans
    Réponses: 2
    Dernier message: 05/12/2011, 11h21
  3. Réponses: 1
    Dernier message: 03/12/2010, 23h00
  4. Réponses: 5
    Dernier message: 01/03/2010, 17h01
  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, 12h19

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