Publicité

Affichage des résultats du sondage: Etes vous pour ou contre cette proposition ?

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

    280 76,09%
  • Contre

    88 23,91%
+ Répondre à la discussion Actualité déjà publiée
Page 3 sur 4 PremièrePremière 1234 DernièreDernière
Affichage des résultats 41 à 60 sur 79
  1. #41
    Expert Confirmé Sénior

    Inscrit en
    mai 2003
    Messages
    3 251
    Détails du profil
    Informations forums :
    Inscription : mai 2003
    Messages : 3 251
    Points : 10 542
    Points
    10 542

    Par défaut

    Citation Envoyé par pierreact Voir le message
    Je suis pour et souhaite aussi que les deux syntaxes restent disponible...
    Si cela est _impossible_... (Pas de raison, mais...) J'accepte quand meme, vu que le generique et l'instance ne sont que repetition de toutes facons...
    Tout ce qui est proposé ici permettra toujours de code comme avant. On n'enlève rien. Les "anciennes" syntaxes seront toujours valides. On ne fait qu'en introduire de nouvelles.

    Vincent
    Vincent Brabant

    Ne pas me contacter par MP ni par mail pour des questions techniques. Ma liste d'amis restera vide.

  2. #42
    Rédacteur/Modérateur
    Avatar de bouye
    Homme Profil pro Fabrice Bouyé
    Développeur Java
    Inscrit en
    août 2005
    Messages
    4 534
    Détails du profil
    Informations personnelles :
    Nom : Homme Fabrice Bouyé
    Âge : 38
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : août 2005
    Messages : 4 534
    Points : 13 098
    Points
    13 098
    Billets dans le blog
    1

    Par défaut

    Citation Envoyé par ludosoft Voir le message
    Je pense qu'il ne faut pas trop en enlever non plus hein... Le fait de mettre "<>" indique clairement à l'oeil que ce n'est pas une "simple HashMap" qui est instanciée.
    Ben si justement, c'est tout la le probleme, ca ne reste que du sucre syntaxique au final on a bien une map toute simple et le compilateur qui met des cast la ou il faut dans le bytecode (en gros la ou on les mettait manuellement en java 1.4-). Donc aucune difference avec la creation d'une Map<Object, Object>.

    Et ça ferait quoi ce code là ?
    Code :
    1
    2
    Map 
      anagrams = (Map<String, List<String>>)new HashMap<>();
    On peut deja faire sans aucun probleme :

    Code :
     Map anagrams = (Map<String, List<String>>)new HashMap();
    Il est possible de caster HashMap<Object, Object> en Map<String, List<String>> et de recaster cette derniere en Map<Object, Object> . On a juste le warning habituel :

    Code :
    1
    2
    Note: test\TestCast.java uses unchecked or unsafe operations.
    Note: Recompile with -Xlint:unchecked for details.
    Code :
    1
    2
    3
    4
    5
    6
    test\TestCast.java:24: warning: [unchecked] unchecked cast
    found   : java.util.HashMap
    required: java.util.Map<java.lang.String,java.util.List<java.lang.String>>
        Map anagrams = (Map<String, List<String>>)new HashMap();
                                                  ^
    1 warning
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #43
    Membre habitué Avatar de ludosoft
    Homme Profil pro Ludovic Martin
    Chef de projet technique
    Inscrit en
    juillet 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Nom : Homme Ludovic Martin
    Âge : 33
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : juillet 2002
    Messages : 96
    Points : 114
    Points
    114

    Par défaut

    Merci pour ces précisions bouye

  4. #44
    Expert Confirmé Sénior
    Avatar de djo.mos
    Inscrit en
    octobre 2004
    Messages
    4 673
    Détails du profil
    Informations forums :
    Inscription : octobre 2004
    Messages : 4 673
    Points : 7 849
    Points
    7 849

    Par défaut

    Pour.
    Pas de perte d'informations, pas d'ambiguités, bref que des atouts ...

  5. #45
    Membre confirmé Avatar de Amine_sas
    Profil pro
    Étudiant
    Inscrit en
    juin 2005
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2005
    Messages : 245
    Points : 297
    Points
    297

    Par défaut

    Citation Envoyé par vbrabant Voir le message
    Tout ce qui est proposé ici permettra toujours de code comme avant. On n'enlève rien. Les "anciennes" syntaxes seront toujours valides. On ne fait qu'en introduire de nouvelles.

    Vincent
    Encore une belle raison pour être pour.

  6. #46
    Membre Expert
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    septembre 2003
    Messages
    1 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

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

    Informations forums :
    Inscription : septembre 2003
    Messages : 1 045
    Points : 1 513
    Points
    1 513

    Par défaut

    Pour, la plupart des raisons invoquées me semblant tout à fait valables. Regrettons quand même les <>, qui sont sans doute pas utiles (peut être pour la lecture, et encore).
    En premier lieu, utilisez un moteur de recherche.
    En second lieu, postez sur le forum adéquat !

  7. #47
    Expert Confirmé Avatar de gifffftane
    Profil pro
    Inscrit en
    février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : février 2007
    Messages : 2 354
    Points : 2 604
    Points
    2 604

    Par défaut

    CONTRE, parce que il est déjà possible, par l'inférence automatique, de supprimer complètement les répétitions.

    Ainsi, pour créer un HashMap on peut écrire simplement :
    Code :
    1
    2
    3
    4
     
        HashMap<String, Integer> hash;
     
        hash = nouv();
    Avec, comme méthode nouv :
    Code :
    1
    2
    3
    4
    5
     
      public static <A, B> HashMap<A, B> nouv()
      {
        return new HashMap<A, B>();
      }
    On voit que je ne répète nulle part <String, Integer>.

    Pour exploiter cette propriété il suffirait de rajouter des méthodes de création d'bbjets génériques adéquates dans le JDK, ce qui serait nettement plus léger, et mieux, à mon avis, que de changer la syntaxe.

    C'est ce que je fais déjà dans mon code, (ou à peu près), où, dans chaque classe générique que je fais, j'écris ma petite méthode statique nouv qui simplifie l'écriture.
    Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
    Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.

  8. #48
    Expert Confirmé
    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 048
    Points
    3 048

    Par défaut

    Bah tu dois t'amuser si tu codes une classe utilitaire ayant des méthodes pour tous les cas de création de Map, Set, List, et autres types utilisant les génériques. Ça alourdi le code et niveau maintenabilité c'est pas le top non plus.
    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

  9. #49
    Expert Confirmé
    Avatar de mavina
    Homme Profil pro Frédéric Mora
    Développeur Java
    Inscrit en
    octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Nom : Homme Frédéric Mora
    Âge : 29
    Localisation : Chine

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

    Informations forums :
    Inscription : octobre 2004
    Messages : 1 812
    Points : 2 524
    Points
    2 524

    Par défaut

    Bah non, son code est totalement adapté, pour n'importe quel typage de son HashMap il utilise la même fonction. Ya juste une fonction par type. Mais il ne fais plus 50 new, il n'en fait qu'un par fonction

    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]

  10. #50
    Expert Confirmé Avatar de gifffftane
    Profil pro
    Inscrit en
    février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : février 2007
    Messages : 2 354
    Points : 2 604
    Points
    2 604

    Par défaut

    Oui, heu... je suis pas Sun, moi, je vais pas m'amuser à faire une méthode pour chaque cas de création...

    Au demeurant, il suffirait à Sun de les inclure dans chaque classe générique, ce qui me semble largement plus facile que de changer la syntaxe.
    Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
    Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.

  11. #51
    Expert Confirmé
    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 048
    Points
    3 048

    Par défaut

    Citation Envoyé par mavina Voir le message
    Bah non, son code est totalement adapté, pour n'importe quel typage de son HashMap il utilise la même fonction. Ya juste une fonction par type. Mais il ne fais plus 50 new, il n'en fait qu'un par fonction
    Oui merci, ça j'avais compris, j'utilise ce principe dans mon code. Ce que je veux dire c'est qu'il doit faire un new TreeMap, un new HashMap, un new HashSet, un new LinkedHashSet, etc...
    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
    Expert Confirmé
    Avatar de mavina
    Homme Profil pro Frédéric Mora
    Développeur Java
    Inscrit en
    octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Nom : Homme Frédéric Mora
    Âge : 29
    Localisation : Chine

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

    Informations forums :
    Inscription : octobre 2004
    Messages : 1 812
    Points : 2 524
    Points
    2 524

    Par défaut

    Certes, mais d'un autre coté tu utilises rarement toutes les collections existantes dans un programme, par contre tu en instancie souvent une poignée d'une même collection

    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]

  13. #53
    Rédacteur/Modérateur
    Avatar de pseudocode
    Homme Profil pro Xavier Philippeau
    Architecte système
    Inscrit en
    décembre 2006
    Messages
    9 960
    Détails du profil
    Informations personnelles :
    Nom : Homme Xavier Philippeau
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : décembre 2006
    Messages : 9 960
    Points : 15 759
    Points
    15 759

    Par défaut

    J'ai voté contre.

    1. Par principe, je suis pour la séparation du type de la variable et du type de l'instance. J'irai meme jusqu'a imposer que le type d'une variable soit toujours une interface.

    2. Si le but c'est la lisibilité alors le gain est vraiment minime. Autant carrément supprimer le mot clé new et faire des allocations facon "C":

    Code java :
    1
    2
     
    HashMap<String, List<String>> anagrams;
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  14. #54
    Membre chevronné
    Inscrit en
    décembre 2004
    Messages
    432
    Détails du profil
    Informations forums :
    Inscription : décembre 2004
    Messages : 432
    Points : 607
    Points
    607

    Par défaut

    Citation Envoyé par adiGuba Voir le message
    Pour moi c'est le type déclaré qui est important et non pas le type de la création , donc :
    Code :
    1
    2
    3
     
    Map<Context,Layer> mymap = new HashMap();        
    traitement(mymap);
    Cela n'apporte rien de répéter le type lors de la création...
    Pour moi, c'est exactement le contraire

    Et donc je suis pour la simplification, mais contre la solution proposée. Je verrais plutôt d'un bon oeil un truc "à la" dotnet:
    Code :
    var mymap = new Map<Context,Layer>();
    où toute la déclaration est après le = .

    Celà, bien sûr, uniquement quand l'écriture à simplifier comprend un type déclaré et un type instancié identiques. Dans le cas contraire, il faut conserver l'écriture actuelle.

  15. #55
    Rédacteur
    Avatar de benwit
    Inscrit en
    septembre 2004
    Messages
    1 675
    Détails du profil
    Informations forums :
    Inscription : septembre 2004
    Messages : 1 675
    Points : 3 549
    Points
    3 549

    Par défaut

    Thorna, je suis plutôt de l'avis d'adiGuba.
    Aussi, je ne comprend pas pourquoi tu peux trouver le type de création plus important que le type déclaré ?

    Aurais tu des arguments pour nous faire comprendre ton point de vue ?

  16. #56
    Expert Confirmé Sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    avril 2002
    Messages
    13 336
    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 336
    Points : 21 584
    Points
    21 584

    Par défaut

    Citation Envoyé par Thorna Voir le message
    Je verrais plutôt d'un bon oeil un truc "à la" dotnet:
    Code :
    var mymap = new Map<Context,Layer>();
    où toute la déclaration est après le = .
    Perso cela ne m'enchante pas

    On perd toute l'abstraction des types...


    Code :
    Map<Context,Layer> map = ...;
    J'utilise une Map, et je me fiche de son implémentation exacte. Bref la déclaration comporte tout ce dont j'ai besoin de savoir. L'appel du constructeur se contente de créer une implémentation...


    a++

  17. #57
    Membre chevronné
    Inscrit en
    décembre 2004
    Messages
    432
    Détails du profil
    Informations forums :
    Inscription : décembre 2004
    Messages : 432
    Points : 607
    Points
    607

    Par défaut

    Citation Envoyé par benwit Voir le message
    Thorna, je suis plutôt de l'avis d'adiGuba.
    Aussi, je ne comprend pas pourquoi tu peux trouver le type de création plus important que le type déclaré ?
    Aurais tu des arguments pour nous faire comprendre ton point de vue ?
    Comme quelqu'un le dit un peu plus haut, à son avis, tous les types déclarés devraient être des interfaces.
    Sans aller jusqu'à pousser le raisonnement aussi loin, ça veut quand même quelque part dire qu'on déclare par exemple un "fourre-tout" véhicule (une interface qui peut décrire aussi bien des camions que des voitures ou des vélos...) et qu'on instancie un Camion, ou un Vélo, ou une Voiture alors qu'il est interdit d'instancier un véhicule... Ce qui laisse trainer dans mon esprit l'idée que le "vrai" type est celui qu'on instancie. Bien sûr, la notion d'héritage est là pour qu'on puisse gérer partout où c'est nécessaire des véhicules, tout en sachant qu'en y regardant de plus près, il s'agit vraiment de Camion, de Vélo...
    Je ne suis pas spécialiste de la théorie des langages, c'est juste un ressenti personnel, issu de 30 ans de programmation dans une bonne quinzaine de langages divers ( aahh le basic GFA, l'assembleur Z80; ... ).

    On perd toute l'abstraction des types...
    Code :
    Map<Context,Layer> map = ...;
    J'utilise une Map, et je me fiche de son implémentation exacte. Bref la déclaration comporte tout ce dont j'ai besoin de savoir. L'appel du constructeur se contente de créer une implémentation...
    Dans ce cas, pourquoi ne pas écrire
    Code :
    Map<Context,Layer> map = new (paramètres)
    sans préciser new map(...) ?

  18. #58
    Expert Confirmé Sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    avril 2002
    Messages
    13 336
    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 336
    Points : 21 584
    Points
    21 584

    Par défaut

    Citation Envoyé par Thorna Voir le message
    Dans ce cas, pourquoi ne pas écrire
    Code :
    Map<Context,Layer> map = new (paramètres)
    sans préciser new map(...) ?
    Parce que pour la création on a besoin de connaitre le type précis pour pouvoir le créer : va-t-on instancier une HashMap, une TreeMap, ou une autre Map ???

    Par contre quand on l'utilise dans 99% des cas on n'a que faire de l'implémentation car on utilise les méthodes de base défini dans l'interface Map.

    La déclaration du type de la variable est importante car on va se baser dessus pour tous les traitements effectué sur cette variable...


    a++

  19. #59
    Membre Expert
    Avatar de fabszn
    Homme Profil pro Fabrice Sznajderman
    Développeur Java
    Inscrit en
    mars 2002
    Messages
    976
    Détails du profil
    Informations personnelles :
    Nom : Homme Fabrice Sznajderman
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : mars 2002
    Messages : 976
    Points : 1 600
    Points
    1 600

    Par défaut

    Hello,

    Je vote pour pour toutes les raisons évoquées ci-dessus.

    Concernant la suppression des <>, je suis partagé.. Cela peut prêter à confusion dans le code. De plus, l'affichage de warning serait du coup plus suptile et difficile à interpréter.
    @+

    Fabszn
    Twitter : @fsznajderman

    N'oubliez pas le bouton
    Comment bien poser ses questions sur le forum


  20. #60
    Futur Membre du Club
    Inscrit en
    février 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : février 2008
    Messages : 13
    Points : 16
    Points
    16

    Par défaut

    Pour. J'ai bien le sentiment de n'ajouter qu'un grain de sable dans le quasi consensus sur ce debat mais je ne vois aucune raison de ne pas enrichir Java dans ce sens, compte tenu de ce que cela améliore sensiblement la lisibilité du code.

    Bolla

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •