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 :

[Débat]RFE : avoir des accesseurs automatiquement généré pour les variables ? [Débat]


Sujet :

Langage Java

  1. #1
    Membre expérimenté

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 1 374
    Points
    1 374
    Par défaut [Débat]RFE : avoir des accesseurs automatiquement généré pour les variables ?
    Bonjour

    Je vous écris concernant la RFE (Request for Enhancement) 4228585 .

    En gros, elle parle d'avoir des accesseurs automatiquement généré pour les variables.

    Dans la proposition, il est question d'avoir une nouvelle propriété ou quelque chose d'équivalent. Ceci dit, le statut exact du traitement de cette demande est très floue.

    Pour ma part, je trouve qu'avoir des accesseurs automatiquement générés serait un grand gain. Le principe d'encapsulation des variables serait alors réellement vérifier, et non approximativement comme actuellement...

    Est ce que je rate quelque chose ? Etes vous d'accord (si oui... votez pour la RFE !!) ? Etes vous contre ? Pourquoi ?

    Comme dirait Roumen Strohl : ZedroS, on a quest to make Java rocks
    Merci d'utiliser le bouton [Résolu] pour les sujets qui le sont.
    [pub]mon blog franco anglais, article du moment: Wicket: fournir des données JSON via Ajax[/pub]

  2. #2
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    point important: les accesseurs/mutateurs ne doivent pas être automatiquement public (il faut que le programmeur choisisse)
    de plus pas pertinent pour des membres qui seraient final!

    j'ai cru comprendre qu'en C# (vade retro satanas) c'est pas trop mal conçu: on décrit les accesseurs/mutateurs et leur visibilité, le compilateur remplace alors dans le code courant les appels direct par des appels aux accesseurs/mutateurs.
    à mon (très humble) avis ceci n'a d'intérêt que dans des objets pour lesquels des soucis du style interception peuvent se produire....
    Donc, pour une fois -mais c'est la dernière hein! - peut être ok pour une syntaxe à la C# mais totalement optionelle et à la discretion du programmeur (j'ai une sainte horreur des "facilités d'écriture").
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

  3. #3
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Pour info, sur le billet En Vrac du blog du 8 décembre, il y a un lien vers le blog de Danny Coward qui parle du JDK7 et des fonctionnalitées qui sont à l'étude :


    Dans le PDF il y a une partie sur de nouvelles fonctions du langage qui sont à l'étude (mais cela ne signifie en aucun cas que ce sera forcément intégré), et on y parle brièvement de cela (pas exactement de la même manière toutefois) !

    Ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private String foo;
    public String getFoo() {..}
    public void setFoo(String foo){..}
    Pourrait être remplacé par ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public property String foo;

    J'avait également déjà vu une autre version basée sur les annotations, de mémoire (car je n'ai pas le lien sous la main) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    private @Property() String foo1;
    private @Property(Access.READ_ONLY) String foo2;


    Perso, je pense que cela peut être une bonne idée, à condition que cela génère des méthodes setter/getter standard, et qu'il soit toujours possible de les codé soit-même (sinon ils n'ont plus aucun intérêt). Il serait bien également de pouvoir y ajouter la gestion d'un PropertyChangeEvent...



    Citation Envoyé par professeur shadoko
    j'ai cru comprendre qu'en C# (vade retro satanas) c'est pas trop mal conçu: on décrit les accesseurs/mutateurs et leur visibilité, le compilateur remplace alors dans le code courant les appels direct par des appels aux accesseurs/mutateurs.
    Hum... personnellement cela ne me plait pas trop, car il s'agit d'une syntaxe simple (et qui sera donc utilisé surtout par les débutant), alors que derrière cela utilise des concepts un peu plus compliqué... et que comme beaucoup de facilité d'écriture cela peut provoquer des problèmes dû à la méconnaissance des méchanismes cachés...



    Par contre le document PDF cité plus haut proposait une solution alternative en utilsiant l'opérateur -> du C/C++ (mais d'une manière différente), afin de pouvoir remplacé le code suivant :
    Par ceci :Je suis un peu sceptique (il faudrait voir à l'usure) mais ca pourrait être intérressant (bien entendu le bytecode généré devra être strictement le même).


    a++

  4. #4
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    Citation Envoyé par adiGuba
    il y a un lien vers le blog de Danny Coward qui parle du JDK7 et des fonctionnalitées qui sont à l'étude :
    merci pour le lien
    vu
    apparement le sucre syntaxique serait limité aux seuls Beans.

    Par contre j'aime bien dans ce document le fait qu'on semble enfin se préoccuper de l'inexistence de la notion de publication... mais il faut voir les détails de ces super-packages

    à suivre
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

  5. #5
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par professeur shadoko
    apparement le sucre syntaxique serait limité aux seuls Beans.
    A la notion de beans (donc un simple objet Java sérialisable avec des accesseurs pour ses attributs), à ne pas confondre avec les EJB

    Citation Envoyé par professeur shadoko
    Par contre j'aime bien dans ce document le fait qu'on semble enfin se préoccuper de l'inexistence de la notion de publication... mais il faut voir les détails de ces super-packages
    Il s'agit de la JSR-277 qui couvre un aspect plus large (nouveau format d'archive), dont la première early draft a déjà été publié : http://jcp.org/en/jsr/detail?id=277


    a++

  6. #6
    Membre expérimenté

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 1 374
    Points
    1 374
    Par défaut
    Merci pour vos intéressantes réponses

    Sans rentrer de le détail de la mise en oeuvre, je trouve perso que rien que le principe est une chose importante. Ainsi, l'encapsulation serait réelle et permettrait ainsi vraiment de faire des mises à jour transparentes, au moins pour les éléments attributs sans accesseurs particuliers.

    Actuellement, un type primitif en tant qu'attribut dans une classe est tout sauf aisément modifiable. Ou est l'encapsulation la ? N'est ce pas un principe important ?

    Avoir automatiquement tous les attributs (de type primitif ou dérivés de la classe Object) accédés via des accesseurs aideraient beaucoup à refactoriser/modifier après coup. Enfin, il me semble :$ Je ne suis pas si sûr en fait.

    Qu'en dites vous ?
    Merci d'utiliser le bouton [Résolu] pour les sujets qui le sont.
    [pub]mon blog franco anglais, article du moment: Wicket: fournir des données JSON via Ajax[/pub]

  7. #7
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    Citation Envoyé par ZedroS
    Avoir automatiquement tous les attributs (de type primitif ou dérivés de la classe Object) accédés via des accesseurs aideraient beaucoup à refactoriser/modifier après coup. Enfin, il me semble :$ Je ne suis pas si sûr en fait.
    tout dépend de ce que tu appelles attribut.
    je ne suis pas d'accord pour les variables membres: certaines ne doivent pas être accessible par l'API et d'autres doivent pouvoir évoluer indépendament de l'API (c'est une part importante de l'idée d'encapsulation)
    exemple (stupide): imagine une classe Date qui a des attributs jour, heure etc.
    supposons que l'on ait l'accesseur getHeure() , rien ne m'empêche ensuite de supprimer la variable membre "heure" et de remplacer à l'intérieur de ma classe toutes mes valeurs par un seul "long" ... mais je laisse getHeure() dans l'API. Donc ici il y a distinction entre l'attribut "heure" et les variables membres : le champ "heure" disparait. après cette modification avoir un accesseur pour mon champ de type "long" ne s'impose pas.
    conclusion: je suis opposé aux facilités syntaxiques qui ne laisseraient pas le programmeur maître de son design (par contre l'idée de C# mentionnée ci-dessus va dans le sens inverse: elle favorise les "cuts", c'est le code d'uitlisation des variables membres qui est transformé de manière à passer par des accesseurs -qui peuvent être privés!-).
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/03/2009, 15h56
  2. [XI 3.1] - SQL généré pour les jointures
    Par nin33 dans le forum Designer
    Réponses: 3
    Dernier message: 15/12/2008, 12h11
  3. Réponses: 10
    Dernier message: 21/02/2008, 16h59
  4. Réponses: 17
    Dernier message: 22/12/2006, 15h28

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