Précédent   Forum du club des développeurs et IT Pro > Java > Communauté Java > Débats

Débats Les débats et sondages sur le langage et les technologies Java

Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Affichage des résultats du sondage: Etes vous pour ou contre cette proposition ?
Pour 280 76,09%
Contre 88 23,91%
Votants: 368. Vous ne pouvez pas participer à ce sondage.

Publicité
'
Réponse Actualité déjà publiée
 
Outils de la discussion
Vieux 20/12/2007, 18h27   #41
vbrabant
Expert Confirmé Sénior
 
Inscription : mai 2003
Messages : 3 293
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 3 293
Points : 7 670
Points : 7 670
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.
vbrabant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2007, 22h13   #42
bouye
Modérateur
 
Avatar de bouye
 
Homme Fabrice Bouyé
Développeur Java
Inscription : août 2005
Messages : 4 078
Détails du profil
Informations personnelles :
Nom : Homme Fabrice Bouyé
Âge : 36
Localisation : Nouvelle-Calédonie

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

Informations forums :
Inscription : août 2005
Messages : 4 078
Points : 8 546
Points : 8 546
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>.

Citation:
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
bouye est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2007, 15h37   #43
ludosoft
Membre habitué
 
Avatar de ludosoft
 
Homme Ludovic Martin
Chef de projet technique
Inscription : juillet 2002
Messages : 95
Détails du profil
Informations personnelles :
Nom : Homme Ludovic Martin
Âge : 32
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juillet 2002
Messages : 95
Points : 116
Points : 116
Envoyer un message via MSN à ludosoft Envoyer un message via Skype™ à ludosoft
Merci pour ces précisions bouye
ludosoft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2007, 15h42   #44
djo.mos
Expert Confirmé Sénior
 
Avatar de djo.mos
 
Inscription : octobre 2004
Messages : 4 678
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 4 678
Points : 7 003
Points : 7 003
Pour.
Pas de perte d'informations, pas d'ambiguités, bref que des atouts ...
__________________
Mon Blog | Mes Cours | Moi sur twitter
djo.mos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2007, 16h40   #45
Amine_sas
Membre éclairé
 
Avatar de Amine_sas
 
Étudiant
Inscription : juin 2005
Messages : 245
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2005
Messages : 245
Points : 307
Points : 307
Envoyer un message via Yahoo à Amine_sas Envoyer un message via Skype™ à Amine_sas
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.
Amine_sas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2007, 12h22   #46
Patriarch24
Membre Expert
 
Avatar de Patriarch24
 
Homme
Ingénieur développement logiciels
Inscription : septembre 2003
Messages : 1 039
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

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

Informations forums :
Inscription : septembre 2003
Messages : 1 039
Points : 1 532
Points : 1 532
Envoyer un message via MSN à Patriarch24
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 !
Patriarch24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2007, 12h52   #47
gifffftane
Membre Expert
 
Avatar de gifffftane
 
Inscription : 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 446
Points : 2 446
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é.
gifffftane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2007, 18h24   #48
natha
Expert Confirmé
 
Avatar de natha
 
Inscription : janvier 2006
Messages : 2 344
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : janvier 2006
Messages : 2 344
Points : 2 861
Points : 2 861
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
natha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2007, 18h45   #49
mavina
Responsable IRC
 
Avatar de mavina
 
Homme Frédéric Mora
Développeur Java
Inscription : octobre 2004
Messages : 1 815
Détails du profil
Informations personnelles :
Nom : Homme Frédéric Mora
Âge : 28
Localisation : Chine

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

Informations forums :
Inscription : octobre 2004
Messages : 1 815
Points : 2 623
Points : 2 623
Envoyer un message via MSN à mavina Envoyer un message via Skype™ à mavina
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]
mavina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2007, 20h29   #50
gifffftane
Membre Expert
 
Avatar de gifffftane
 
Inscription : 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 446
Points : 2 446
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é.
gifffftane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/12/2007, 10h11   #51
natha
Expert Confirmé
 
Avatar de natha
 
Inscription : janvier 2006
Messages : 2 344
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : janvier 2006
Messages : 2 344
Points : 2 861
Points : 2 861
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
natha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/12/2007, 12h21   #52
mavina
Responsable IRC
 
Avatar de mavina
 
Homme Frédéric Mora
Développeur Java
Inscription : octobre 2004
Messages : 1 815
Détails du profil
Informations personnelles :
Nom : Homme Frédéric Mora
Âge : 28
Localisation : Chine

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

Informations forums :
Inscription : octobre 2004
Messages : 1 815
Points : 2 623
Points : 2 623
Envoyer un message via MSN à mavina Envoyer un message via Skype™ à mavina
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]
mavina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2007, 01h50   #53
pseudocode
Rédacteur/Modérateur
 
Avatar de pseudocode
 
Homme Xavier Philippeau
Architecte système
Inscription : décembre 2006
Messages : 9 815
Détails du profil
Informations personnelles :
Nom : Homme Xavier Philippeau
Âge : 40
Localisation : France, Hérault (Languedoc Roussillon)

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

Informations forums :
Inscription : décembre 2006
Messages : 9 815
Points : 16 464
Points : 16 464
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.
pseudocode est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2008, 08h30   #54
Thorna
Membre éprouvé
 
Inscription : décembre 2004
Messages : 362
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 362
Points : 417
Points : 417
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.
Thorna est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2008, 09h01   #55
benwit
Rédacteur
 
Avatar de benwit
 
Inscription : septembre 2004
Messages : 1 628
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 1 628
Points : 3 094
Points : 3 094
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 ?
benwit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2008, 09h22   #56
adiGuba
Expert Confirmé Sénior
 
Avatar de adiGuba
 
Homme
Développeur Java/Web
Inscription : avril 2002
Messages : 12 656
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Corse (Corse)

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

Informations forums :
Inscription : avril 2002
Messages : 12 656
Points : 22 431
Points : 22 431
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++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java Présentation de Java SE 7 (commentaires)
adiGuba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2008, 17h43   #57
Thorna
Membre éprouvé
 
Inscription : décembre 2004
Messages : 362
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 362
Points : 417
Points : 417
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; ... ).

Citation:
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(...) ?
Thorna est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2008, 17h48   #58
adiGuba
Expert Confirmé Sénior
 
Avatar de adiGuba
 
Homme
Développeur Java/Web
Inscription : avril 2002
Messages : 12 656
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Corse (Corse)

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

Informations forums :
Inscription : avril 2002
Messages : 12 656
Points : 22 431
Points : 22 431
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++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java Présentation de Java SE 7 (commentaires)
adiGuba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2008, 00h10   #59
fabszn
Membre Expert
 
Avatar de fabszn
 
Homme Fabrice Sznajderman
Développeur Java
Inscription : mars 2002
Messages : 974
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 : 974
Points : 1 676
Points : 1 676
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

fabszn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2008, 10h24   #60
Bollagain
Candidat au titre de Membre du Club
 
Inscription : février 2008
Messages : 13
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 13
Points : 14
Points : 14
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
Bollagain est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Actualité déjà publiée
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 10h15.


 
 
 
 
Partenaires

Hébergement Web