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: Êtes-vous pour ou contre cette proposition ?
Pour la proposition 1 103 34,68%
Pour la proposition 2 22 7,41%
Contre 172 57,91%
Votants: 297. Vous ne pouvez pas participer à ce sondage.

Publicité
'
Réponse
 
Outils de la discussion
Vieux 16/12/2007, 21h05   #1
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
Par défaut JDK 7: Proposition 11 : Typedef

Typedef, c'est permettre de créer une espèce d'alias ou de raccourcis.
Par exemple :

Proposition 1 :
Code :
1
2
3
4
5
import java.util.Map<String,String> as MyProperties;
import java.util.Map<String,T> as Lookup<T>;
// if we add BGGA function types[
import { double => double } as DoubleFcn;
Proposition 2 :
Code :
1
2
3
4
5
 
static class MyProperties = Map<String,String>;
static class Lookup<T> = Map<String,T>;
// if we add BGGA function types
static class DoubleFcn = { double => double };
__________________
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 19/12/2007, 09h50   #2
osopardo
Membre régulier
 
Avatar de osopardo
 
Inscription : juillet 2005
Messages : 92
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : juillet 2005
Messages : 92
Points : 74
Points : 74
Généralement on ne fait pas vraiment attention aux imports, les EDI permettent même de les masquer automatiquement, la proposition 1 risque donc d'apporter une certaine confusion à la lecture du code.
osopardo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 10h05   #3
adiGuba
Expert Confirmé Sénior
 
Avatar de adiGuba
 
Homme
Développeur Java/Web
Inscription : avril 2002
Messages : 12 654
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 654
Points : 22 428
Points : 22 428
Je suis plutôt pour la proposition 1, et cela permettrait de résoudre plus facilement des conflits de nom de classes.

Actuellement on est obligé d'utiliser le nom complet pour une des classes :
Code :
1
2
3
4
5
import java.util.Date;
 
...
Date date = new Date(); // java.util.Date
java.sql.Date sqlDate = new java.sql.Date(0L); // java.sql.Date

On pourrait donc faire ceci :
Code :
1
2
3
4
5
6
import java.util.Date;
import java.sql.Date as SqlDate;
 
...
Date date = new Date(); // java.util.Date
SqlDate sqlDate = new SqlDate(0L); // java.sql.Date
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 19/12/2007, 10h38   #4
bobuse
Membre confirmé
 
Avatar de bobuse
 
Inscription : janvier 2005
Messages : 229
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 229
Points : 217
Points : 217
Comme osopardo, je me suis d'abord fait la réflexion que la prop 1 risque de ne pas être visible. Mais ceci dit, la prop 2 est un peu alambiquée et compliquée.

Ce qui est sûr, c'est que comme dit adiGuba, ce serait vraiment pratique. Ça fait partie des choses qui me manquent terriblement par rapport au Python, qui utilise la syntaxe de la première prop.

J'ai donc voté pour la 1, en me disant que les IDE pouvaient ensuite s'adapter pour rendre la chose visible Car c'est à l'IDE de s'adapter au langage, et non l'inverse !

EDIT : Argghhh, beaucoup de contre
bobuse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 10h58   #5
austin P.
Membre habitué
 
Avatar de austin P.
 
Inscription : juin 2004
Messages : 175
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : juin 2004
Messages : 175
Points : 142
Points : 142
pouah quel horreur

si des "collisions" sur les noms arrivent, il faut changer le nom de la ou des classes. cela evite que l'on nomme de la même façon 2 classes qui ont une couverture technique/fonctionnnelle différente.

Déjà que trouver un nom de classe clair n'est pas simple mais en plus si on permet ça, la maintenance vas être sympa dans les années a venir...
__________________
En essayant continuellement on finit par réussir. Donc : plus ça rate, plus on a de chance que ça marche. (Jacques Rouxel : "Les shadoks")
austin P. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 11h24   #6
romaintaz
Rédacteur/Modérateur
 
Avatar de romaintaz
 
Homme Romain Linsolas
Java craftsman
Inscription : juillet 2005
Messages : 3 579
Détails du profil
Informations personnelles :
Nom : Homme Romain Linsolas
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Java craftsman
Secteur : Finance

Informations forums :
Inscription : juillet 2005
Messages : 3 579
Points : 6 721
Points : 6 721
J'ai voté contré parce que ça va clairement complexifier le code. Pour peu qu'une personne dans l'équipe définisse ses propres alias, ça va finir par être dur à lire le code.
Pour peu que l'on ait un vicieux, on va se retrouver avec des trucs complètement improbables, comme par exemple "échanger" le nom de 2 classes :

Code :
1
2
3
 
import mypackage.ClassA as ClassB;
import mypackage.ClassB as ClassA;

Je vois toutefois 2 avantages à cette proposition :
1. Comme l'a dit adiGuba, c'est vraiment bien dans le cas où l'on importe 2 classes de même nom mais de packages différents.
2. Ca pourrait être utilisé (détourné ?) pour améliorer l'obfuscation de code

Maintenant, si ça devait être implémenté, je préfèrerais la syntaxe 1 (ça fait un peu SQL, mais bon).
__________________
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
romaintaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 11h43   #7
Uther
Expert Confirmé Sénior
 
Avatar de Uther
 
Homme
Inscription : avril 2002
Messages : 2 676
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2002
Messages : 2 676
Points : 5 103
Points : 5 103
Voté contre car, le typedef, c'est un truc que je déteste déja en C/C++, j'ai pas envie de me le retrouver en Java.

Je trouve vraiment que ça a tendence a rendre le code pas clair contrairement a son but d'original.
Uther est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 12h02   #8
bassim
Membre expérimenté
 
Avatar de bassim
 
Homme
Ingénieur Réseaux
Inscription : février 2005
Messages : 647
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France

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

Informations forums :
Inscription : février 2005
Messages : 647
Points : 592
Points : 592
Envoyer un message via MSN à bassim Envoyer un message via Yahoo à bassim
Le cas qu'a présenté adibuga est vraiment tres rare en Java, je crois !

Citation:
J'ai voté contré parce que ça va clairement complexifier le code. Pour peu qu'une personne dans l'équipe définisse ses propres alias, ça va finir par être dur à lire le code.
Pour peu que l'on ait un vicieux, on va se retrouver avec des trucs complètement improbables, comme par exemple "échanger" le nom de 2 classes :
+1

je suis contre moi aussi !

protégeons notre langage
__________________
Club des développeurs algériens

Where is my mind
bassim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 12h06   #9
bobuse
Membre confirmé
 
Avatar de bobuse
 
Inscription : janvier 2005
Messages : 229
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 229
Points : 217
Points : 217
Citation:
Envoyé par romaintaz Voir le message
Pour peu que l'on ait un vicieux, on va se retrouver avec des trucs complètement improbables, comme par exemple "échanger" le nom de 2 classes :

Code :
1
2
3
 
import mypackage.ClassA as ClassB;
import mypackage.ClassB as ClassA;
Ouais, bof, tu sais, dans l'état, un vicieux pourrait déjà faire n'importe quoi, en surchargeant des méthodes qui appellent les mauvaises méthodes de la superclasse par exemple.
bobuse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 12h06   #10
adiGuba
Expert Confirmé Sénior
 
Avatar de adiGuba
 
Homme
Développeur Java/Web
Inscription : avril 2002
Messages : 12 654
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 654
Points : 22 428
Points : 22 428
Citation:
Envoyé par bassim Voir le message
Le cas qu'a présenté adibuga est vraiment tres rare en Java, je crois !
Dans l'API standard oui... mais il y a un certain nombre de classe "Utils" dans les librairies externes

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 19/12/2007, 12h07   #11
bobuse
Membre confirmé
 
Avatar de bobuse
 
Inscription : janvier 2005
Messages : 229
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 229
Points : 217
Points : 217
Citation:
Envoyé par austin P. Voir le message
si des "collisions" sur les noms arrivent, il faut changer le nom de la ou des classes. cela evite que l'on nomme de la même façon 2 classes qui ont une couverture technique/fonctionnnelle différente.

Déjà que trouver un nom de classe clair n'est pas simple mais en plus si on permet ça, la maintenance vas être sympa dans les années a venir...
Ça reste qu'une possibilité. Donc si tu ne veux pas chercher de noms différents, tu fais à l'ancienne avec le chemin complet.
bobuse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 12h09   #12
bobuse
Membre confirmé
 
Avatar de bobuse
 
Inscription : janvier 2005
Messages : 229
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 229
Points : 217
Points : 217
Bande de conservateurs va !
bobuse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 14h11   #13
bulbo
Rédacteur
 
Avatar de bulbo
 
Homme
Consultant informatique
Inscription : février 2004
Messages : 1 180
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 40
Localisation : France

Informations professionnelles :
Activité : Consultant informatique
Secteur : Finance

Informations forums :
Inscription : février 2004
Messages : 1 180
Points : 1 856
Points : 1 856
Plutôt pour,

Utile en cas de conflits de nom, et tu n'as pas toujours le contrôle des noms des librairies que tu utilises comme l'a dit adiGuba.

Faire a l'ancienne c'est bien mais quand tu as des packages a rallonge, tu as vite des lignes de code de plus de 200 caractères et la lecture et super chaotique.

[Edit]
Pour la propal 1 en fait, il est normal de résoudre dans les imports les conflits .. des imports pour moi
[/Edit]

Bulbo
__________________
[Java] [NetBeans] [CVS]
La FAQ Java
Merci de ne pas me poser de questions techniques par MP.
!! J'aurais voulu être une conserve !!
bulbo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 14h58   #14
Uther
Expert Confirmé Sénior
 
Avatar de Uther
 
Homme
Inscription : avril 2002
Messages : 2 676
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2002
Messages : 2 676
Points : 5 103
Points : 5 103
Apres lecture des commentaires, je vais modérer mon avis. C'est vrai que pour résoudre des conflits de nom c'est une bonne idée, mais seulement dans ce cas la à mon avis. Or les exemples donné pour illustrer la proposition montrent clairement que ce n'est pas dans cette optique que c'est prévu d'être utilisé.
Donc je dirais ok a condition d'interdire:
- les generics dans les imports
- deux imports d'une même classe même avec un alias différents.

Code :
1
2
import java.util.Map<String,String> as MyProperties;
import java.util.Map<String,T> as Lookup<T>;
non

Code :
1
2
import java.util.Map as UtilMap;
import com.roadmaps.Map as RoadMap;
oui
Uther est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 23h58   #15
nicorama
Membre Expert
 
Avatar de nicorama
 
Inscription : juillet 2006
Messages : 765
Détails du profil
Informations personnelles :
Âge : 37
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : juillet 2006
Messages : 765
Points : 1 054
Points : 1 054
Quelle horreur ! On se croirait dans du SQL, back in the 70's et les pattes d'eph !
__________________
Robusta Web Library : Clients RESTful open source pour Java, Android & GWT.
API Simple et Productive. Avec style.
nicorama est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2007, 09h32   #16
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
Plutôt de l'avis d'Uther.

Je ne suis pas trop chaud mais je vais voté pour la une (surtout pour éviter que la proposition 2 soit retenue dès fois que ça passerait)
benwit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2007, 09h45   #17
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
Vu la proportion de débutants qui mettent énormément de temps à comprendre qu'il faut nommer les choses correctement pour qu'on comprenne un peu ce qu'il se passe, avec des propositions pareilles dans Java7 je vais passer 3x plus de temps à comprendre ce qui a été fait et ça ne m'enchante gère.

Pour un développeur plus expérimenté je dis pas, c'est bien pratique et j'aimerais pouvoir utiliser cette syntaxe (prop 1 ou 2 peu importe). Mais voilà, y a pas que des dev expérimentés.
__________________
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 20/12/2007, 10h02   #18
romaintaz
Rédacteur/Modérateur
 
Avatar de romaintaz
 
Homme Romain Linsolas
Java craftsman
Inscription : juillet 2005
Messages : 3 579
Détails du profil
Informations personnelles :
Nom : Homme Romain Linsolas
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Java craftsman
Secteur : Finance

Informations forums :
Inscription : juillet 2005
Messages : 3 579
Points : 6 721
Points : 6 721
Je me dis que si ça passe dans Java7, il serait intéressant que les IDE mette en évidence le fait qu'une classe a un alias.
Par exemple, en proposant de mettre une couleur particulière genre :

Code :
1
2
3
4
5
6
7
8
9
import java.util.Date;
import java.util.Date as Date2;

...
public void aMethod() {
    Date date = ...;
    Date2 date = ...;
}
__________________
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
romaintaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2007, 10h18   #19
bmoussaud
Membre expérimenté
 
Avatar de bmoussaud
 
Benoit Moussaud
Inscription : décembre 2003
Messages : 218
Détails du profil
Informations personnelles :
Nom : Benoit Moussaud
Âge : 40
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2003
Messages : 218
Points : 548
Points : 548
Envoyer un message via Yahoo à bmoussaud Envoyer un message via Skype™ à bmoussaud
C''est la porte ouverte aux vieux demons du langage C:
import java.util.Map<String,String> as MyProperties;
Non ! Java est un langage Objet et il doit le rester !
Si c'est pour économiser 3 frappes de touches, les IDE modernes sont maintenant bien présent
__________________
Benoit Moussaud - XebiaLabs - Automatisation des déploiements. Screencast & Demo
bmoussaud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2007, 11h58   #20
Traroth2
Expert Confirmé
 
Inscription : décembre 2003
Messages : 1 659
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 1 659
Points : 3 313
Points : 3 313
Si je comprends bien, la proposition 2, ça revient à introduire un troisième bloc préliminaire avant la classe, après le package et les imports. Pourquoi pas... Ca aurait l'avantage de la clarté, parce que la proposition 1, c'est un peu... confusant...
__________________
Les brevets ? Le type qui a inventé l'eau chaude doit être grave blindé de thunes !
Traroth2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 08h05.


 
 
 
 
Partenaires

Hébergement Web