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 : 225
    Points
    225

    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
    657
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    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 : 657
    Points : 533
    Points
    533

    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 : 225
    Points
    225

    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 : 225
    Points
    225

    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 259
    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 259
    Points : 1 777
    Points
    1 777

    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 737
    Détails du profil
    Informations personnelles :
    Nom : Homme Romain Linsolas
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : juillet 2005
    Messages : 3 737
    Points : 6 683
    Points
    6 683

    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
    813
    Détails du profil
    Informations forums :
    Inscription : septembre 2003
    Messages : 813
    Points : 863
    Points
    863

    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 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : novembre 2006
    Messages : 5 583
    Points : 6 204
    Points
    6 204

    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
    657
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    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 : 657
    Points : 533
    Points
    533

    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 188
    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 188
    Points : 19 111
    Points
    19 111

    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 : 225
    Points
    225

    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
    657
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    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 : 657
    Points : 533
    Points
    533

    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
    657
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    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 : 657
    Points : 533
    Points
    533

    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 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : novembre 2006
    Messages : 5 583
    Points : 6 204
    Points
    6 204

    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
    657
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    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 : 657
    Points : 533
    Points
    533

    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 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : novembre 2006
    Messages : 5 583
    Points : 6 204
    Points
    6 204

    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 : Communication - Médias

    Informations forums :
    Inscription : janvier 2007
    Messages : 2 749
    Points : 4 094
    Points
    4 094

    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 946
    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 946
    Points : 3 072
    Points
    3 072

    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 188
    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 188
    Points : 19 111
    Points
    19 111

    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
  •