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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Par défaut
    Je suis pour si toutes les propositions précédentes sont présentes

  2. #2
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 112
    Par défaut
    Contre. Imaginer que vous vouliez changer le nom de votre variable. le nom des get/set changera avec ... quel beau bordel ca fera.

  3. #3
    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 : 53
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Un tout petit petit pour ..

    D'ailleurs ça doit être faisable déjà aujourd'hui avec des assertions.

    Pas un gain énorme sauf quand on doit écrire un javabean stupide a la mano, mais la plupart du temps on passe par un framework X ou Y aujourd'hui donc ..

    Faudrait que la javadoc suive aussi dans ce cas et ajoute les méthodes invisibles dans le code automatiquement.
    Pour moi inutile de donner la priorité a un getter écrit a la mano par exemple, il faut dans ce cas virer le mot clé property et faire les choses correctement en contrôlant le getter et le setter.

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

  4. #4
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Citation Envoyé par bulbo Voir le message
    Pour moi inutile de donner la priorité a un getter écrit a la mano par exemple, il faut dans ce cas virer le mot clé property et faire les choses correctement en contrôlant le getter et le setter.
    Je suis tout à fait d'accord, c'est bien plus propre. Maintenant, rien ne t'empêche de définir un setter (ou un getter) sur une property, et dans ce cas, j'estime qu'il est important que le setter (getter) défini manuellement soit prioritaire...
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  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 : 53
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Citation Envoyé par romaintaz Voir le message
    Je suis tout à fait d'accord, c'est bien plus propre. Maintenant, rien ne t'empêche de définir un setter (ou un getter) sur une property, et dans ce cas, j'estime qu'il est important que le setter (getter) défini manuellement soit prioritaire...
    Tu peux aussi avoir une erreur de compil qui te dit que tu essayes de redéfinir un get/set d'une property et je préfèrerais ça. Imagine tu fais une faute de frappe dans le nom de ta méthode .. du coup tu n'appelleras pas la bonne et en regardant ton code tu auras l'impression que si ..

    Alors que si 'property' get/set auto sinon get/set a la mano, tu es sur de pas te planter..

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

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Il semblerait que toutes ces propositions aient un point commun... que le programmeur en code un minimum, quitte à rendre le code plus incompréhensible par des "opérations automatiques"
    Je finirais presque par être contre toutes les propositions... sauf peut-être le switch String... et là, il faudra qu'on m'explique comment rendre indépendant le test d'un charset... (en le fixant peut-être ?)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre chevronné Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Par défaut
    Il semblerait que toutes ces propositions aient un point commun... que le programmeur en code un minimum, quitte à rendre le code plus incompréhensible par des "opérations automatiques"
    moi aussi, je trouve qu'il n y a vraiment rien de révolutionnaire dans ces propositions (pas comme les Generics dans java 5)

  8. #8
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Citation Envoyé par bulbo Voir le message
    Tu peux aussi avoir une erreur de compil qui te dit que tu essayes de redéfinir un get/set d'une property et je préfèrerais ça. Imagine tu fais une faute de frappe dans le nom de ta méthode ..
    Justement, si tu fais une faute de frappe (genre getTurc() pour une propriété truc), comment le compilateur va savoir que tu redéfinis un getter (setter) ? Le coup de l'exception ne servirait à rien dans ce cas !
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  9. #9
    Membre chevronné Avatar de heid
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2002
    Messages : 388
    Par défaut
    Citation Envoyé par romaintaz Voir le message
    Justement, si tu fais une faute de frappe (genre getTurc() pour une propriété truc), comment le compilateur va savoir que tu redéfinis un getter (setter) ? Le coup de l'exception ne servirait à rien dans ce cas !
    Une petite annotation avec le nom du champ que tu redéfinis non?

  10. #10
    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 : 53
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Citation Envoyé par romaintaz Voir le message
    Justement, si tu fais une faute de frappe (genre getTurc() pour une propriété truc), comment le compilateur va savoir que tu redéfinis un getter (setter) ? Le coup de l'exception ne servirait à rien dans ce cas !
    Si tu sais que property = set/get automatique tu ne vas pas chercher une méthode dans ton code qui fait ça, contrairement au cas ou ce serait possible.

    Si tu te plantes de nom pour un setter définis a la main tu as deux cas ensuite:

    - tu appelles toujours avec la bonne ortho -> tu utilises bien la property
    - tu appelles avec le mauvais nom aussi (la tu cherches les problèmes ) et un IDE classique te redirigeras sur la méthode appellée

    Dans tout les cas je suis pas un grand grand fan de ce truc quel que soit son implémentation, surtout qu'un coup d'annotation et tu peux déjà écrire dans ton code aujourd'hui:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @bean_property
    private String name
    et générer avec l'annotation le code qui va bien pour faire ce que tu veux.

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

  11. #11
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Un petit pour mais à condition que cela soit personnalisable (niveaux de visibilité, read/write, ajout de code spécifique).
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  12. #12
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 46
    Par défaut
    petit pour parce que les properties façon delphi et C# sont un très bon moyen de coder de maniere encore plus abstrait.

    En contre partie, j'aime bien le standard de Java de tout faire commencer par get et set car ceci combiné à la completion automatique de certains IDE me permettent de savoir tout de suite la liste des champs, quelles champs je peux toucher et comment. mais si netbeans me dit si telle prop' est read ou write, alors volontiers pour.

  13. #13
    Membre chevronné

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2002
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 346
    Par défaut
    Contre.

    Le but des setter et des getter été de pouvoir, de manière transparente, apporter des traitements lors du get et du set.
    D'une certaine manière, c'est un contrat, on dit à celui qui utilise notre classe, tu peut récupérer la valeur par getProperty(), mais il ne sais pas si cette property est juste la valeur de l'attribut property ou autre chose.

    Pour moi, c'est l'intérêt du principe de Javabean.
    Sinon, on fait juste des attributs public!

  14. #14
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Citation Envoyé par woodwai Voir le message
    Contre.

    Le but des setter et des getter été de pouvoir, de manière transparente, apporter des traitements lors du get et du set.
    D'une certaine manière, c'est un contrat, on dit à celui qui utilise notre classe, tu peut récupérer la valeur par getProperty(), mais il ne sais pas si cette property est juste la valeur de l'attribut property ou autre chose.

    Pour moi, c'est l'intérêt du principe de Javabean.
    Sinon, on fait juste des attributs public!
    Pas complètement d'accord avec ça...
    Prennons un framework comme JSF. Si je fais "monBean.maPropriete" dans une page XHTML (ou JSP), alors JSF va chercher à utiliser getMaPropriete() et setMaPropriete() et lancera une erreur si je mets juste la visibilité de maPropriete publique, sans fournir son setter / getter.
    Si je me retrouve avec 30 propriétés dans mon bean, je vais devoir écrire (ou générer) 60 méthodes, ce qui emcombre (pour rien selon mon avis) ma classe Java...
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  15. #15
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Par défaut
    Je suis de l'avis de Woodwai.

    Quant à la remarque de romaintaz, même si je comprend son ennui, c'est LE problème de JSF. C'est JSF qui force l'encapsulation des données et ça devrait être paramétrable si c'est n'est pas le cas.

  16. #16
    Membre confirmé Avatar de ludosoft
    Homme Profil pro
    Chef de projet technique
    Inscrit en
    Juillet 2002
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2002
    Messages : 99
    Par défaut
    Pour mais, comme d'autres je pense qu'il manque une info du genre "lecture seule". Aussi il pourrait être intéressant d'avoir des infos genre "synchronized" et "invokeLater" (pour les composants Swing par ex).

  17. #17
    Invité de passage

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 995
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 995
    Par défaut
    Contre. Ca revient à casser le paradigme objet. On peut déjà déclarer les attributs publics et y accéder, si on a envie, mais la logique objet veut qu'on passe par des accesseurs/mutateurs et qu'on soit un minimum conscient de ce qu'on écrit. Là, on finirait par se retrouver en train d'invoquer des méthodes qu'on ne retrouve pas dans le code. Faut quand même savoir ce qu'on veut. Totalement contre !

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Août 2004
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 34
    Par défaut
    J'ai une tendance à être pour mais j'ai quelques interrogations que personne n'a relevé.

    Je suis totalement pour introduire le mot clé properties dans la définition d'une variable dans un contexte de refléxivité.

    Cependant dans les codes appellants que va t'il se passer réellement ?

    Lorsque je voudrais faire ceci : maVarDuBean.setVarDuBean("....") quel sera l'écriture avec cette nouveauté ? MonBean.maVarDuBean , comme si cette variable était déclarée en public :/

  19. #19
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Contre.
    D'abord, à moins de l'implémenter vraiment d'une façon intélligente dans le compilateur, ça risque des casser un tas de code existant: je ne sais pas pour vous, mais perso, j'utilise le mot property à gogo comme nom de champs.

    De plus, un autre tas de code Java est basée sur les getters/setters tout solution de la famille properties doit implicitement ou explicitement générer des getters et setters ça introduit de l'instrumentation (mais bon, je vous l'accorde, du compile-time weaving).

    Autre chose: on l'a déjà evoqué avant: pour être vraiment utilisable, on doit pouvoir personnaliser les getters/setters. Il y'a l'approche Delphi cool mais bavarde. Il y'a aussi celle du C#: pas mal, mais je crois pas que c'est beaucoup plus concis que les traditionnels getters/setters Java. Donc, à moins de se limiter au cas de getters/setters basiques, cette proposition risque de ne pas être vraiment concise en pratique.

  20. #20
    Membre actif
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 75
    Par défaut
    Il était temps. Les propriétés font quand même partie du principe de l'encapsulation.

    J'ai une nette préférence cette écriture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       [public, private ou protected]property Type nomObjet getter getNomObjet() [ou fNomObjet] setter setNomObjet() [ou fNomObjet];
    C'est clair et précis.


    nota, le terme getter peut etre remplacé par read et setter par write.

Discussions similaires

  1. Réponses: 27
    Dernier message: 19/10/2008, 12h51
  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, 19h14
  3. recopie des propriétés d'un composant
    Par pitounette dans le forum C++Builder
    Réponses: 2
    Dernier message: 20/02/2004, 11h40
  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, 19h53
  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, 18h07

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