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

Affichage des résultats du sondage: Êtes-vous pour ou contre cette proposition ?

Votants
332. Vous ne pouvez pas participer à ce sondage.
  • Pour

    185 55,72%
  • Contre

    147 44,28%
Langage Java Discussion :

JDK 7: Proposition 12 : déclaration des propriétés [Débat]


Sujet :

Langage Java

  1. #61
    Membre habitué
    Profil pro
    Administrateur système
    Inscrit en
    Mai 2002
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Administrateur système

    Informations forums :
    Inscription : Mai 2002
    Messages : 144
    Points : 159
    Points
    159
    Par défaut
    Je suis pour. C'est quand même dommage de pouvoir écrire automatiquement une classe bean en Groovy (comme ci-dessous) alors qu'il faut se payer tous les accesseurs en Java.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class Person {
            firstName
            lastName
            address1
            city
            province
            postcode
    }
     
    p = new Person(firstName:'Ian', lastName:'Darwin', province:'Ontario')
     
    println "Hello ${p.firstName} ${p.lastName}"
    Si un jour on te reproche que ton travail n'est pas un travail de professionnel, dis-toi bien que l'Arche de Noé a été construite par des amateurs et le Titanic par des professionnels...

  2. #62
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 129
    Points : 160
    Points
    160
    Par défaut
    j'ai voté pour mais il faudra améliorer la proposition

    exemple si un attribut est déclaré comme etant une propriety
    il faudra que le compilateur cree automatiquement deux methodes un get et un set

    exemple avec un attribut valeur

    creation automatique de deux methodes

    this.valeur() retourne la valeur
    this.valeur( blabla ) affecte l'attribut valeur

  3. #63
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Comme beaucoup d'autre,
    pour à condition de pouvoir overrider nos méthodes get/set si on a besoin.

    Par défaut, je suis assez contre le système existant qui possède 2 possibilités le getter/setter classiques et les appels par réflexion, parce que si on créé un setter spécifique et que notre système passe par réflexion, et bien le traitement du setter ne sert à rien.

    Ceci permettra peut être d'appeler les méthode surchargées dans tous les cas lorsqu'elle existent...

  4. #64
    Membre averti
    Profil pro
    Lead Tech Agile
    Inscrit en
    Septembre 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Lead Tech Agile

    Informations forums :
    Inscription : Septembre 2004
    Messages : 316
    Points : 417
    Points
    417
    Par défaut
    Contre, à force d'ajouter des fonctionnalités sans réel besoin on augumente la complexité du code.

    Pour les fainéants eclipse génère automatiquement les getter/setter.

  5. #65
    Membre régulier
    Inscrit en
    Décembre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 46
    Points : 86
    Points
    86
    Par défaut
    Citation Envoyé par ultrafil Voir le message
    Contre, à force d'ajouter des fonctionnalités sans réel besoin on augumente la complexité du code.

    Pour les fainéants eclipse génère automatiquement les getter/setter.
    pour moi, le besoin de cette fonctionnalité est réel. il améliore radicalement la lisibilité du code.

  6. #66
    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 : 51
    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 gokud-o-matic Voir le message
    pour moi, le besoin de cette fonctionnalité est réel. il améliore radicalement la lisibilité du code.
    Comment une proposition proposant d'ajouter des méthodes "invisibles" les getter/setter, peut elle améliorer la lisibilité ?

    Ce que tu ne vois pas tu ne le lis pas, et il est très facile à la lecture de manquer un mot clé au milieu d'une déclaration contrairement à deux méthodes qu'il est quand même plus dur de zapper.

    Pas une meilleure lisibilité, juste une astuce de fainéant qui se paiera ailleurs (maintenance, évolutivité, debug) à mon avis

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

  7. #67
    Membre régulier
    Inscrit en
    Décembre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 46
    Points : 86
    Points
    86
    Par défaut
    Citation Envoyé par bulbo Voir le message
    Comment une proposition proposant d'ajouter des méthodes "invisibles" les getter/setter, peut elle améliorer la lisibilité ?

    Ce que tu ne vois pas tu ne le lis pas, et il est très facile à la lecture de manquer un mot clé au milieu d'une déclaration contrairement à deux méthodes qu'il est quand même plus dur de zapper.

    Pas une meilleure lisibilité, juste une astuce de fainéant qui se paiera ailleurs (maintenance, évolutivité, debug) à mon avis

    Bulbo
    nous parlons bien de propriétés, n'est-ce pas? si la déclaration de propriétés est bien lisible, elle ne sera pas pire qu'un getter et/ou un setter, surtout qu'il est possible de marquer ces getter et setter comme liés à la propriété avec une annotation.
    je pense que ce sondage regroupe trop de points qui devraient être débattus séparément: l'existence de propriétés et la manière de les déclarer.
    pour leur existence, je suis totalement pour. pour leur déclaration, je suis ouvert.

  8. #68
    Membre habitué
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2004
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2004
    Messages : 102
    Points : 156
    Points
    156
    Par défaut
    Je vote contre car je n'en vois pas l'utilité : supprimer l'obligation d'écrire des getter/setter c'est un peu comme rendre la propriété public, non ?
    Le fait que le compilo génère des set/get, franchement,d'un point de vue relecture de code ou maintenance, je ne vois pas l'apport...


    Finalement au fur et à mesure des simplifications proposées, on va se retrouver avec un langage proche de l'assembleur ou du bytecode

  9. #69
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 561
    Points : 15 488
    Points
    15 488
    Par défaut
    Non car on garde quand même le phénomène d'encapsulation qui est l'interet de la chose. Tu ne vois pas les getter et setters si tu ne juge pas utile de les redéfinir, mais ils sont bien présents.
    Donc, tu ne te rapproche pas du bytecode, bien au contraire.

    Avoir un code inutilement verbeux n'est pas pour moi un gage de qualité.

  10. #70
    Membre averti

    Profil pro
    Coach Agile
    Inscrit en
    Décembre 2005
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Coach Agile

    Informations forums :
    Inscription : Décembre 2005
    Messages : 316
    Points : 371
    Points
    371
    Par défaut
    Il n'est pas question de rendre les getter/setter obligatoires puisque la génération implicite de ceux-ci par le compilateur ne serait appliquée que sur le mot clef "property".

    De la sorte, cela ne reviens pas au même que d'appliquer une portée publique puisque cela oblige toujours les utilisateurs à passer par des fonctions (getter/setter) qui pourront par la suite être rédigée manuellement afin d'y ajouter une plus-value.

  11. #71
    Membre éprouvé
    Avatar de LinkinSelim
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2006
    Messages : 365
    Points : 1 034
    Points
    1 034
    Par défaut
    j'ai voté contre, parce que je ne sais pas comment on va ecrire des attributs readonly ou writeonly ou synchronized !!!

  12. #72
    Membre averti

    Profil pro
    Coach Agile
    Inscrit en
    Décembre 2005
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Coach Agile

    Informations forums :
    Inscription : Décembre 2005
    Messages : 316
    Points : 371
    Points
    371
    Par défaut
    Pour moi, un attribut readonly le deviendrait parce que tu écris uniquement son getter (et comme il existe, le compilateur ne génère rien : ni getter, ni setter), et inversement pour le writeonly.
    En revanche pour le synchronised, d'autres auront peut être plus d'idées que moi.

  13. #73
    Membre régulier
    Inscrit en
    Décembre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 46
    Points : 86
    Points
    86
    Par défaut
    Citation Envoyé par jproto Voir le message
    Pour moi, un attribut readonly le deviendrait parce que tu écris uniquement son getter (et comme il existe, le compilateur ne génère rien : ni getter, ni setter), et inversement pour le writeonly.
    En revanche pour le synchronised, d'autres auront peut être plus d'idées que moi.
    pour la synchro, c'est tres simple. s'il y a un getter ou un setter, on peut les synchronizer de la maniere habituelle. si c'est un acces direct a un champ prive, ce n'est pas synchronisable; on synchronise au niveau de la methode appelante. Au pire, on n'utilise pas les acces directs quand on veut synchroniser.

  14. #74
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 561
    Points : 15 488
    Points
    15 488
    Par défaut
    J'ai retrouvé l'URL de la proposition qui avait été faite par Remi Forax.

    Si c'est implémenté comme cela, ca devrait m'aller.

  15. #75
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Pour mais pas n'importe comment!!

    Le lien donné par Uther présente une solution qui parai tout a fait viable.

    Autre solution et a mon sens la plus sympa, celle du c#:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    private String _test;
    public String test
      {
        get
        {
          return _test;
        }
        set
        {
          _test = value;
        }
      }
    On peut le générer facilement via l'IDE, on garde le contrôle sur les getters/setters, et l'emploi dans le code est un peu plus clair.

  16. #76
    Membre averti

    Profil pro
    Coach Agile
    Inscrit en
    Décembre 2005
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Coach Agile

    Informations forums :
    Inscription : Décembre 2005
    Messages : 316
    Points : 371
    Points
    371
    Par défaut
    Personnellement, cette notation c# ne me séduit pas vraiment, et je ne suis pas convaincu que cela corresponde vraiment à ce qui est recherché dans cette proposition.

  17. #77
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

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

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    contre dans cet état. Je ne veux pas que par défaut tout mes attributs aient des getters / setters, dont je ne connaitrais même pas la visibilité.

    Je verrais plutot une syntaxe de type annotation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    @GetSet(visibility=protected)
    private String prop1;
     
    @Set(visibility=protected)
    @Get
    private String prop2;
    On pourrait s'en sortir avec 3 annotations (@Get, @Set et @GetSet), et un attribut de visibilité, qui par défaut serait a public.

    De cette façon, par défaut, il n'y a aucun accesseurs, mais on peut mettre en place un getter/setter plublic standard juste avec une annotation.

    Et une erreur de compilation si l'annotation rentre en conflit avec une méthode.

  18. #78
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Pour si on peut ajouter ses getters/setters de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public property String maPropriété;
     
    public property void setMaPropriété (String newMaPropriété) {
        ...
    }
     
    public property String getMaPropriété () {
        ...
    }
    Ceci permet de préciser que nous travaillons sur un getter/setter de propriété. Et ceci est nécessaire pour le compilateur, je crois.

    Pour read-only, write-only, on pourrait faire quelque chose de simple, comme ceci, comme un code de méthode abstraite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public property String maPropriété;
     
    private property void setMaPropriété (String newMaPropriété);
     
    private property String getMaPropriété ();

  19. #79
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Tout le monde n'a pas toujours accès à un IDE dernière génération pour faire de la génération automatique, malgré le JRE qui lui est de dernière génération.

    Je pense notamment à... mon cas, où je développe en vi sur un serveur d'application tournant sur Java 6. J'aimerais tant passer à Eclipse que j'ai utilisé dans mon précédent emploi et que j'utilise dans mes projets, mais on ne me le permet pas (et non, pour le moment, j'ai pas envie d'apprendre la méga-ligne sed à taper qui pourrait me faire ça **caugh** automatiquement).

  20. #80
    Membre régulier
    Inscrit en
    Décembre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 46
    Points : 86
    Points
    86
    Par défaut
    Citation Envoyé par dingoth Voir le message
    Tout le monde n'a pas toujours accès à un IDE dernière génération pour faire de la génération automatique, malgré le JRE qui lui est de dernière génération.

    Je pense notamment à... mon cas, où je développe en vi sur un serveur d'application tournant sur Java 6. J'aimerais tant passer à Eclipse que j'ai utilisé dans mon précédent emploi et que j'utilise dans mes projets, mais on ne me le permet pas (et non, pour le moment, j'ai pas envie d'apprendre la méga-ligne sed à taper qui pourrait me faire ça **caugh** automatiquement).
    on t'impose vi contre ta volonte? ton boss veut eviter que tu sois productif ou quoi?

Discussions similaires

  1. Réponses: 27
    Dernier message: 19/10/2008, 11h51
  2. JDK 7: Proposition 13 : Accès aisé aux propriétés
    Par vbrabant dans le forum Langage
    Réponses: 93
    Dernier message: 16/10/2008, 18h14
  3. recopie des propriétés d'un composant
    Par pitounette dans le forum C++Builder
    Réponses: 2
    Dernier message: 20/02/2004, 10h40
  4. Comment cacher des propriétés dans un nouvel objet ?
    Par Pedro dans le forum Composants VCL
    Réponses: 2
    Dernier message: 22/10/2003, 18h53
  5. ouverture de la fenêtre des propriétés afffichage
    Par Mercilius dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 26/03/2003, 17h07

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