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
278. Vous ne pouvez pas participer à ce sondage.
  • Pour

    61 21,94%
  • Contre

    217 78,06%
Langage Java Discussion :

JDK 7: Proposition 5 : extensions de méthodes [Débat]


Sujet :

Langage Java

  1. #41
    Membre régulier Avatar de yostane
    Homme Profil pro
    test
    Inscrit en
    Mars 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : test

    Informations forums :
    Inscription : Mars 2006
    Messages : 84
    Points : 106
    Points
    106
    Par défaut
    je suis pour si on ajoute un caractère au début de la méthode qui spécifie que c'extension (par exemple $)
    yostane

  2. #42
    Membre expérimenté
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Points : 1 640
    Points
    1 640
    Par défaut
    Moi je ne retiens que ça :
    * c'est illisible (mélange de styles, total patchwork)
    * ça n'apporte rien
    * ça rend le code ambigu
    Donc contre.
    En premier lieu, utilisez un moteur de recherche.
    En second lieu, postez sur le forum adéquat !

  3. #43
    Membre averti Avatar de Amine_sas
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 245
    Points : 307
    Points
    307
    Par défaut
    Contre, pour ce qui suit:

    - ça donne l'impression de programmer avec un langage procédural, et pire encore: avec un langage comme le C l'utilisation de #include<fichier.h> (bien qu'elle soit différente de import) permet d'utiliser toutes les fonctions dont le prototype est déclaré dans fichier.h alors qu'avec cette syntaxe il va falloir un import pour chaque méthode static qu'on veut appeler ce qui pourrait être ennuyeux et vraiment laid. Dans ce cas, la syntaxe ordinaire (importer le package entier ou la classe) semblerait incontournable.
    "Un remboursement des programmes défectueux serait envisageable mais toute l'industrie du logiciel ferait faillite la première année." Andrew Tanenbaum.

  4. #44
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Et sur quel critère tu vas trier tes objets ?!
    Si c'est des numériques, c'est simple, mais si ce sont des objets complexes, tu fais comment ?
    Et bien tu passes en paramètre de sort() le critère.
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  5. #45
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 132
    Points : 170
    Points
    170
    Par défaut
    L'idée semble bonne mais je vote contre car je pense que la code deviendrai vite très dur à maintenir.

    Devoir regarder les imports pour savoir si la methode a été redefinie de facon globale ou alors est vraimment une methode de l'interface me semble compliqué.

    Si on commence à faire genre de chose après on va vouloir des namespace pour savoir à qui appartient la méthode ...

  6. #46
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Je m'étais abstenu de voter mais vu les explications pour et contre de chacun depuis je vote contre
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  7. #47
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2005
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2005
    Messages : 97
    Points : 208
    Points
    208
    Par défaut CONTRE
    Je suis contre perso, pour plein de raisons déja citées (code inmaintenable, bricolage & co. rien ne vaut une bonne vieille methode statique)

  8. #48
    Membre régulier Avatar de zambizi
    Inscrit en
    Juin 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2007
    Messages : 109
    Points : 95
    Points
    95
    Par défaut
    j'ai voté contre
    j'ai vus que ça complique un peu l'apprentissage !
    Ghazi Sabri IT's Fun.

    http://dzit.wordpress.com

  9. #49
    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
    Totalement contre.

    Citation Envoyé par yann2 Voir le message
    Je préfère plutôt l'ajout d'une méthode sort dans l'interface List par exemple.
    Ça serait beaucoup plus logique...

  10. #50
    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 ®om Voir le message
    Citation Envoyé par yann2 Voir le message
    Je préfère plutôt l'ajout d'une méthode sort dans l'interface List par exemple.
    Ça serait beaucoup plus logique...
    Mais malheureusement impossible sans provoquer une perte de la compatibilité...

    a++

  11. #51
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Mais malheureusement impossible sans provoquer une perte de la compatibilité...
    Pour Java 3 alors
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  12. #52
    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
    On n'est pas déjà à Java6 ? oO

    @ Adiguba : créer une interface List2 alors ?

  13. #53
    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 dingoth Voir le message
    On n'est pas déjà à Java6 ? oO
    Les numéro de version sont assez complexe chez Sun

    natha fait allusion à "Java 2" qui était le nom donné à Java depuis les version 1.2 à 1.5/5.0...

    Ainsi cette dernière se nomme "Java 2 Platform Standard Edition 5.0"

    Citation Envoyé par dingoth Voir le message
    @ Adiguba : créer une interface List2 alors ?
    Le problème persistera alors pour les API utilisant List, et on se retrouverait avec deux méthodes différentes (ce qui est encore plus génant à mon avis) :
    Pour l'interface List :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    List<String> list = ...;
    Collections.sort( list );
    Pour l'interface List2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    List2<String> list = ...;
    list.sort();

    Perso je trouve qu'il n'est pas évident de trouver une bonne solution à ce problème...


    a++

  14. #54
    Rédacteur
    Avatar de lunatix
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2002
    Messages
    1 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 960
    Points : 3 736
    Points
    3 736
    Par défaut
    je pense moi que c'est une bonne idée. C'est le seul moyen d'ajouter des methodes a certains objets courant (String par exemple, quand on bosse en web, il manque des tonnes de choses), sans casser la compatibilité en modifiant les interfaces.

    apres, oui, si on utilise partout les extensions de méthodes, ca devient illisible, mais c'est pareil avec beaucoup de choses (generics, import static, annotations) tout permet de coder de facon assez horrible.

    meme l'héritage ca peut etre horrible : qui n'est jamais tombé sur un objet qui est le 15 eme d'un arbre d"héritage et quasi incomprehensible.

    par contre, utilisé avec inteligence : ca aiderait. On pourrait faire des bibliotheques ciblées (StringWebUtils par exemple, ou ListUtil) et les utiliser de facon objet.

    la seule autre solution, ca serait de faire des la version 1 des librairies completes c'est pas gagné

  15. #55
    Membre émérite
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    Je crois aussi qu'ajouter un sort dans List est assez problématique, mais je trouve que l'extension de méthode est tout aussi problématique au niveau de la lisibilité au moins.
    On perd, AMHA, toute la puissance de la javadoc

    F.
    Développeur Java / Flex à Shanghai, Chine
    mes publications
    Mon dernier tutoriel : Messages Quit IRC : explications

    La rubrique IRC recrute des redacteurs : contactez moi

    Ce flim n'est pas un flim sur le cyclimse. Merci de votre compréhension.[/SIZE]

  16. #56
    Rédacteur
    Avatar de lunatix
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2002
    Messages
    1 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 960
    Points : 3 736
    Points
    3 736
    Par défaut
    j'ajoute ici le post d'un C#eur qui a la meme vision que moi sur les extensions methodes (et qui avait au debut la meme vision que la majorité ici qui vote non)
    why-i-changed-my-mine-about-extension-methods

  17. #57
    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
    Citation Envoyé par adiGuba Voir le message
    Les numéro de version sont assez complexe chez Sun

    natha fait allusion à "Java 2" qui était le nom donné à Java depuis les version 1.2 à 1.5/5.0...

    Ainsi cette dernière se nomme "Java 2 Platform Standard Edition 5.0"
    Je sais bien, mais ils ont tout de même décidé de l'appeler Java6 selon le même système, en sautant Java3, 4, 5. Tellement que autant j'entends parler de Java 1.5 et Java 5 (qui sont pareils), j'entends jamais parler de Java 1.6. Ca fait longtemps que j'ai pas fait un java -version avec un JRE 6 (et ici, je n'ai à disposition que la 3 et la 5). Mais, est-ce écrit Java 1.6.XX ou Java 6 ? Et dans System.getProperty("java.version"); ?

  18. #58
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Citation Envoyé par dingoth Voir le message
    Mais, est-ce écrit Java 1.6.XX ou Java 6 ? Et dans System.getProperty("java.version"); ?
    Tout est là :
    http://java.sun.com/javase/6/webnotes/version-6.html


    Sinon Java 5.0 était un peu un mélange des 2 noms car il était tout autant valide de dire Java 1.5 que Java 5.0 ou Tiger.
    Pour Java 6.0 la transition est faite.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  19. #59
    Membre régulier Avatar de fatypunk
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 71
    Points : 74
    Points
    74
    Par défaut
    Contre, sans retenue.

    La méthode la plus moralement acceptable pour ajouter une méthode à une Interface de l'API standard consiste a créer une nouvelle Interface et à rendre l'ancienne deprecated (mais supportée indéfiniment).

    Concernant le tri il est clair que la situation aujourd'hui n'est pas propre ! Je proposerais que List et Collection reste tel quel et que les méthodes sort de Collections deviennent deprecated.

    Il resterais a ajouter ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public interface SortableCollection extends Collection {
        public void sort();
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public interface SortableList<T extends Comparable> extends SortableCollection {
        [...]
    }
    Et faire des SortableArrayList, ....

    Enfin j'ai pas réfléchis le truc a fond c'est juste une idée qui demande à être travaillée...

    Il y a des tas de truc que l'on pourrais rendre plus propre comme ça dans l'API, et utiliser des generics partout parce que là c'est un peu le patchwork....
    Développeur Java SE, Java EE (EJB3)
    IDE : Netbeans 6.5 / Serveur d'application : Glassfish v2.1 / OS : Ubuntu 8.10 Intrepid Ibex et CentOS 5
    Historique : GWBasic, Turbo Pascal (beaucoup), Visual Basic, C (un peu), C++ (beaucoup), Assembleur (6800 et x86 / un peu), Java, Smalltalk (un peu), Lisp (un peu), Prolog (un peu), PHP, Ruby (un peu), et retour à Java (beaucoup).

    Pas de questions techniques par MP s'il vous plait !

  20. #60
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 585
    Points : 1 139
    Points
    1 139
    Par défaut
    J'ai dans l'idée qu'outre le problème du sort() pour une List, le débat tourne plus généralement autour de la question de savoir jusqu'où un langage objet doit l'être.
    c'est le l'appel de fonction à la C: printf(toto) .
    c'est l'application d'une méthode à un objet.
    J'aurais tendance dans tous les cas à préférer, de loin, la 2ème manière de faire. Cependant, List n'étant pas prévue pour ça, je me résouds à la première sans grand enthousiasme.
    Toutefois, j'aime assez le principe d'enchainer des méthodes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    truc.hop().hip().hup();
    lorsque c'est possible (personnellement je trouve ça plus clair, plutôt que moins), non pas en bricolant des imports statiques, mais en prévoyant tout simplement de retourner le type de la classe dans ses méthodes au lieu de void. Impossible pour les classes ou interfaces déjà existantes, mais rien n'empêche de les encapsuler dans une autre qui rend la chose possible.
    L'avis publié ci-dessus est mien et ne reflète pas obligatoirement celui de mon entreprise.

Discussions similaires

  1. Réponses: 165
    Dernier message: 03/09/2009, 15h35
  2. Réponses: 78
    Dernier message: 27/08/2009, 19h29
  3. JDK 7: Proposition 3 : Comparer les énumérations
    Par vbrabant dans le forum Langage
    Réponses: 52
    Dernier message: 19/10/2008, 12h36
  4. Réponses: 27
    Dernier message: 19/10/2008, 11h51
  5. [XSLT] JDK 5.0 et Extension XSLT
    Par Folken_fr dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 11/10/2006, 09h47

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