Soutenez-nous
Publicité

Affichage des résultats du sondage: Êtes-vous pour ou contre cette proposition ?

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

    114 37,50%
  • Contre

    190 62,50%
+ Répondre à la discussion
Page 2 sur 5 PremièrePremière 12345 DernièreDernière
Affichage des résultats 21 à 40 sur 95
  1. #21
    Membre confirmé Avatar de bobuse
    Inscrit en
    janvier 2005
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : janvier 2005
    Messages : 229
    Points : 223
    Points
    223

    Par défaut

    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 !!

  2. #22
    Membre expérimenté Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    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 : 522
    Points
    522

    Par défaut

    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 !

  3. #23
    Membre confirmé Avatar de bobuse
    Inscrit en
    janvier 2005
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : janvier 2005
    Messages : 229
    Points : 223
    Points
    223

    Par défaut

    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.

  4. #24
    Membre confirmé Avatar de bobuse
    Inscrit en
    janvier 2005
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : janvier 2005
    Messages : 229
    Points : 223
    Points
    223

    Par défaut

    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 !!!

  5. #25
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    février 2004
    Messages
    1 256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : février 2004
    Messages : 1 256
    Points : 1 773
    Points
    1 773

    Par défaut

    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.

  6. #26
    Rédacteur/Modérateur
    Avatar de romaintaz
    Homme Profil pro Romain Linsolas
    Java craftsman
    Inscrit en
    juillet 2005
    Messages
    3 717
    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 717
    Points : 6 516
    Points
    6 516

    Par défaut

    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

  7. #27
    Membre émérite Avatar de Jester
    Inscrit en
    septembre 2003
    Messages
    810
    Détails du profil
    Informations forums :
    Inscription : septembre 2003
    Messages : 810
    Points : 854
    Points
    854

    Par défaut

    Contre,

    return this; si on veut pouvoir le faire.

  8. #28
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    novembre 2006
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : novembre 2006
    Messages : 5 463
    Points : 6 071
    Points
    6 071

    Par défaut

    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...

  9. #29
    Membre expérimenté Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    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 : 522
    Points
    522

    Par défaut

    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) {    }
    }

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

    Par défaut

    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++

  11. #31
    Membre confirmé Avatar de bobuse
    Inscrit en
    janvier 2005
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : janvier 2005
    Messages : 229
    Points : 223
    Points
    223

    Par défaut

    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)

  12. #32
    Membre expérimenté Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    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 : 522
    Points
    522

    Par défaut

    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
    Code :
    1234
     
    monObjet.maMethode1();
    monObjet.maMethode2();
    monObjet.maMethode3();

  13. #33
    Membre expérimenté Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    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 : 522
    Points
    522

    Par défaut

    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

  14. #34
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    novembre 2006
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : novembre 2006
    Messages : 5 463
    Points : 6 071
    Points
    6 071

    Par défaut

    Citation Envoyé par bobuse Voir le message
    La bonne blague
    Tu m'étonnes !

  15. #35
    Membre expérimenté Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    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 : 522
    Points
    522

    Par défaut

    Citation Envoyé par OButterlin Voir le message
    Tu m'étonnes !
    vous êtes méchants

  16. #36
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    novembre 2006
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : novembre 2006
    Messages : 5 463
    Points : 6 071
    Points
    6 071

    Par défaut

    Citation Envoyé par bassim Voir le message
    vous êtes méchants
    même pas vrai !
    en plus j'adorais with

  17. #37
    Rédacteur/Modérateur
    Avatar de CyberChouan
    Homme Profil pro Benoît Courtine
    Directeur technique
    Inscrit en
    janvier 2007
    Messages
    2 749
    Détails du profil
    Informations personnelles :
    Nom : Homme Benoît Courtine
    Âge : 31
    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 749
    Points : 4 027
    Points
    4 027

    Par défaut

    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

  18. #38
    Membre chevronné

    Profil pro
    Inscrit en
    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 : 666
    Points
    666

    Par défaut

    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 ...

  19. #39
    Rédacteur
    Avatar de lunatix
    Homme Profil pro julien
    Architecte technique
    Inscrit en
    novembre 2002
    Messages
    1 945
    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 945
    Points : 3 073
    Points
    3 073

    Par défaut

    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

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

    Par défaut

    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++

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
  •