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 114 37,50%
Contre 190 62,50%
Votants: 304. Vous ne pouvez pas participer à ce sondage.

Publicité
'
Réponse
 
Outils de la discussion
Vieux 19/12/2007, 15h42   #21
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 bassim Voir le message
comme ceci donc :
Code :
1
2
3
4
5
Thing thing = new Builder()
    .try{setSomething(something)}
catch (e: Exception) { ...}
    .setOther(other)
    .result();
c'est carrément illisible

D'où tu sors ton ".try" ?? Je sais pas si ça existe dans le langage, mais si oui, alors c'est ça qui rend illisible ton exemple !!
bobuse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 15h45   #22
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
Citation:
Envoyé par bobuse Voir le message

D'où tu sors ton ".try" ?? Je sais pas si ça existe dans le langage, mais si oui, alors c'est ça qui rend illisible ton exemple !!
en fait, je voulais relever le cas ou on voudrait gérer une exception qui serait générée par une des méthodes, c'est tout
mais bon ça peut se faire en utilisant l'ancienne méthode !
__________________
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, 15h46   #23
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 bassim Voir le message
en java ça serait:
Code :
1
2
3
4
5
with monObjet {
setSomething();
setChose();
traitement(getChose());
}
qu'en pensez vous ?
Bof. L'intérêt du chaînage est de faire tenir sur une ligne quelques appels de méthodes qui ne retournent rien.
Là, on reste avec un beau pavé, autant garder la syntaxe d'aujourd'hui par rapport à cette solution.
bobuse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 15h47   #24
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
En fait, comme dans d'autres proposition, il faut essayer (et c'est parfois dur pour moi aussi) de ne pas penser à ce que ça pourrait permettre de pire mais de bien peser le pour et le contre.

Car sinon, on n'aurait jamais eu l'opérateur ternaire "? :" en Java !!!
bobuse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 15h55   #25
bulbo
Rédacteur
 
Avatar de bulbo
 
Homme
Consultant informatique
Inscription : février 2004
Messages : 1 192
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 192
Points : 1 905
Points : 1 905
Citation:
Envoyé par bobuse Voir le message
En fait, comme dans d'autres proposition, il faut essayer (et c'est parfois dur pour moi aussi) de ne pas penser à ce que ça pourrait permettre de pire mais de bien peser le pour et le contre.

Car sinon, on n'aurait jamais eu l'opérateur ternaire "? :" en Java !!!
Opérateur que je n'utilise quasi jamais et seulement dans des cas particuliers

le ? c'est très bien mais pour avoir du maintenir du code écrit ainsi, il est si facile de passer a cote de code écrit en 2eme partie de ligne, genre après un ; ou un if :
Code :
1
2
 
if (null != bidule) doUnTruc();
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, 16h05   #26
romaintaz
Rédacteur/Modérateur
 
Avatar de romaintaz
 
Homme Romain Linsolas
Java craftsman
Inscription : juillet 2005
Messages : 3 584
Détails du profil
Informations personnelles :
Nom : Homme Romain Linsolas
Âge : 35
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Java craftsman
Secteur : Finance

Informations forums :
Inscription : juillet 2005
Messages : 3 584
Points : 6 779
Points : 6 779
Citation:
Envoyé par bassim Voir le message
en fait, je voulais relever le cas ou on voudrait gérer une exception qui serait générée par une des méthodes, c'est tout
mais bon ça peut se faire en utilisant l'ancienne méthode !
Dans le langage actuel, tu serais obligé de faire :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
try {
    monObject.doSomething();
} catch (...) {
    ...
}
try {
    monObject.doAnotherThing();
} catch (...) {
    ...
}
...
Donc niveau lisibilité, ça aussi c'est pas terrible
__________________
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, 16h12   #27
Jester
Membre émérite
 
Avatar de Jester
 
Inscription : septembre 2003
Messages : 764
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 764
Points : 809
Points : 809
Contre,

return this; si on veut pouvoir le faire.
Jester est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 16h12   #28
OButterlin
Modérateur
 
Avatar de OButterlin
 
Homme
Inscription : novembre 2006
Messages : 5 087
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : novembre 2006
Messages : 5 087
Points : 5 829
Points : 5 829
En l'occurrence, si on veut comparer le code "pascal", ça se ferait comme ça en java
Code :
1
2
3
4
 
monObjet.maMethode1();
monObjet.maMethode2();
monObjet.maMethode3();
le "with" ne traite pas les exceptions levées par l'une des méthodes, donc, si maMethode1() plante, tu ne risques pas de faire la suivante...
OButterlin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 16h14   #29
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
Code :
1
2
3
4
5
6
7
8
9
10
try {
    monObject.doSomething();
} catch (...) {
    ...
}
try {
    monObject.doAnotherThing();
} catch (...) {
    ...
}
dans ce cas, j'aurais crée un type d'exception pour chaque méthode: Exception1 et Exception2

Code :
1
2
3
4
5
6
try {
    monObject.doSomething();
    monObject.doAnotherThing();
} catch (Exception1 ex) {    }
catch (Exception2 ex2) {    }
}
__________________
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, 16h16   #30
adiGuba
Expert Confirmé Sénior
 
Avatar de adiGuba
 
Homme
Développeur Java/Web
Inscription : avril 2002
Messages : 12 661
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 661
Points : 22 460
Points : 22 460
Il y a une différence entre les deux codes :
  • Dans le premiers les deux méthodes sont appelées quoi qu'il arrive
  • Dans le second la seconde méthode n'est appelé que si la première n'a pas remonté d'exception...

A noter quand même qu'il est assez rare qu'on "ignore" une exception comme dans le premier exemple...

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, 16h18   #31
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 OButterlin Voir le message
En l'occurrence, si on veut comparer le code "pascal", ça se ferait comme ça en java
Code :
1
2
3
4
 
monObjet.maMethode1();
monObjet.maMethode2();
monObjet.maMethode3();
La bonne blague

Citation:
Envoyé par bassim Voir le message
dans ce cas, j'aurais crée un type d'exception pour chaque méthode: Exception1 et Exception2

Code :
1
2
3
4
5
6
try {
    monObject.doSomething();
    monObject.doAnotherThing();
} catch (Exception1 ex) {    }
catch (Exception2 ex2) {    }
}
Oui bon là, no comment
(désolé, pas taper, mais c'est plus fort que moi)
bobuse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 16h18   #32
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
Citation:
Envoyé par OButterlin Voir le message
En l'occurrence, si on veut comparer le code "pascal", ça se ferait comme ça en java
Code :
1
2
3
4
 
monObjet.maMethode1();
monObjet.maMethode2();
monObjet.maMethode3();
le "with" ne traite pas les exceptions levées par l'une des méthodes, donc, si maMethode1() plante, tu ne risques pas de faire la suivante...
je sais pas si j'ai bien compris ta remarque, mais pourquoi pas ça:
Code :
1
2
3
4
5
6
7
8
with monObjet {
try {
maMethode1();
}
catch () {}
maMethode2();
maMethode3();
}
j'ai supposé que le with ici, ne fait qu'ajouter la signature de l'objet
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Code :
1234
 
monObjet.maMethode1();
monObjet.maMethode2();
monObjet.maMethode3();
__________________
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, 16h20   #33
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
Citation:
Envoyé par bobuse Voir le message
La bonne blague



Oui bon là, no comment
(désolé, pas taper, mais c'est plus fort que moi)
oui, bon ok je sors
__________________
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, 16h28   #34
OButterlin
Modérateur
 
Avatar de OButterlin
 
Homme
Inscription : novembre 2006
Messages : 5 087
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : novembre 2006
Messages : 5 087
Points : 5 829
Points : 5 829
Citation:
Envoyé par bobuse Voir le message
La bonne blague
Tu m'étonnes !
OButterlin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 16h30   #35
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
Citation:
Envoyé par OButterlin Voir le message
Tu m'étonnes !
vous êtes méchants
__________________
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, 16h33   #36
OButterlin
Modérateur
 
Avatar de OButterlin
 
Homme
Inscription : novembre 2006
Messages : 5 087
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : novembre 2006
Messages : 5 087
Points : 5 829
Points : 5 829
Citation:
Envoyé par bassim Voir le message
vous êtes méchants
même pas vrai !
en plus j'adorais with
OButterlin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 17h12   #37
CyberChouan
Rédacteur/Modérateur
 
Avatar de CyberChouan
 
Homme Benoît Courtine
Directeur technique
Inscription : janvier 2007
Messages : 2 748
Détails du profil
Informations personnelles :
Nom : Homme Benoît Courtine
Âge : 30
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Directeur technique
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2007
Messages : 2 748
Points : 4 492
Points : 4 492
Envoyer un message via MSN à CyberChouan
Contre! Pour la même raison que Bulbo dans son post de la première page...

Je ne suis pas contre le principe de chaînage, mais contre la syntaxe extrêmement ambigüe.

Exemple tordu mais qui a mon sens montre bien les problèmes de la syntaxe si on l'utilise un peu trop rapidement...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Tordu {
   public String att;
 
   public void setAtt(String att) { this.att = att; }
 
   public Tordu faireQuelqueChose() {
      // quelque chose
      return new Tordu();
   }
 
   public void faireAutreChose() {
      // autre chose
   }
}
Et maintenant, imaginons le chaînage:

Code :
1
2
3
4
5
Tordu test = new Tordu();
test
   .setAtt("test")
   .faireQuelqueChose()
   .faireAutreChose();
Bon... cette syntaxe abusive de chaînage serait peut-être interdite si une des méthodes n'est pas de type "void" par sécurité, mais il demeure que la syntaxe prête à confusion.

Par contre, je suis pour l'introduction d'une syntaxe de type "with" pour remplacer le chaînage... peut-être un peu plus lourde, mais assez esthétique et intelligible je trouve
__________________
Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
Mes articles et tutoriaux & Mon blog informatique
CyberChouan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 17h17   #38
woodwai
Rédacteur
 
Inscription : juillet 2002
Messages : 346
Détails du profil
Informations personnelles :
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : juillet 2002
Messages : 346
Points : 695
Points : 695
Le chaînage existe déjà, il suffit de retourner this et on l'obtient (c'est ce qu'on fait souvent avec un StringBuffer). Donc je ne voit pas réellement l'intérêt ...
__________________
Venez visiter mon site sur developpez ou mon blog perso
woodwai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 17h18   #39
lunatix
Rédacteur/Modérateur
 
Avatar de lunatix
 
Homme julien
Architecte technique
Inscription : novembre 2002
Messages : 1 910
Détails du profil
Informations personnelles :
Nom : Homme julien
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Architecte technique

Informations forums :
Inscription : novembre 2002
Messages : 1 910
Points : 3 323
Points : 3 323
Envoyer un message via ICQ à lunatix Envoyer un message via AIM à lunatix Envoyer un message via MSN à lunatix
bon, c'est vrai qu'a la reflexion, vaudrait mieux changer la norme javaBean pour avoir le droit de retourner l'instance de la classe dans un seter, et ca serait reglé.

Code :
1
2
3
4
public Maclass setMachin(String machin)
     this.machin = machin;
     return this;
}
comme ca, pas de modification du langage, et on peut chainer si on en a envie sans avoir a passer par un builder ou une fluent interface
__________________
Blog blog = new MyBlog();
lunatix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 17h39   #40
adiGuba
Expert Confirmé Sénior
 
Avatar de adiGuba
 
Homme
Développeur Java/Web
Inscription : avril 2002
Messages : 12 661
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 661
Points : 22 460
Points : 22 460
Citation:
Envoyé par woodwai Voir le message
Le chaînage existe déjà, il suffit de retourner this et on l'obtient (c'est ce qu'on fait souvent avec un StringBuffer). Donc je ne voit pas réellement l'intérêt ...
Dans ce cas il faut voter pour la proposition 10 qui permet de pallier les problèmes lorsqu'on couple chainage et héritage

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
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h03.


 
 
 
 
Partenaires

Hébergement Web