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 17/02/2008, 12h39   #81
zegreg
Nouveau Membre du Club
 
Inscription : août 2005
Messages : 73
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 73
Points : 35
Points : 35
Je suis contre.

1) Je trouve primo que faire des chaînages ne devraient pas faire partie des "best practices". Comme déjà dit, en cas d'exceptions ça devient difficile à debuger et en plus question lecture de code, ce n'est pas terrible. Alors ajouter des facilités pour des mauvaises habitudes, non.
2) void ce n'est pas this, ça ne tient pas debout. Pour les adeptes des chaînages vous n'avez qu'à retourner l'objet qu'il faut dans votre méthode.
3) Je vois vraiment pas le gain... C'est plus rapide? A quel point de vue? Relecture du code? Debugage? A part ajouter de l'incohérence dans le langage (void <> this), je vois pas trop ce que ça ferait...
zegreg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 08h54   #82
nonilastar
Futur Membre du Club
 
Inscription : juin 2002
Messages : 29
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : juin 2002
Messages : 29
Points : 16
Points : 16
Envoyer un message via MSN à nonilastar
Dans une utilisation raisonné ça peut améliorer la lisibilité du code. Il faut se donner des limites et je pense que cette amélioration peut être forte avantageuse.
nonilastar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 10h21   #83
jproto
Membre éclairé
 
Inscription : décembre 2005
Messages : 315
Détails du profil
Informations personnelles :
Âge : 36
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : décembre 2005
Messages : 315
Points : 300
Points : 300
Citation:
Envoyé par nonilastar Voir le message
Dans une utilisation raisonné ...
Malheureusement, il me semble illusoire de penser que ton voisin, ou l’intervenant externe en mission chez toi pour 3 semaines aura la même notion que toi de « l'utilisation raisonnée ».
jproto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 10h35   #84
nonilastar
Futur Membre du Club
 
Inscription : juin 2002
Messages : 29
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : juin 2002
Messages : 29
Points : 16
Points : 16
Envoyer un message via MSN à nonilastar
En effet, peut-être que mon voisin ou l'intervenant ne saura pas respecter les règles de codage que je souhaites mettre en place dans mon service. Le rôle d'un chef de projet peut aussi passer par une revue de code hebdomadaire pour vérifier ces règles et faire des réajustements si nécessaire. Donc il me parait pertinent de pouvoir utiliser cette syntaxe qui, comme toutes les améliorations proposées dans V7 et dans les précédentes, ne sont pas obligatoirement utilisable. C'est une boite à outils qu'il faut réguler pour que la lisibilité et le debuggage du code soit cohérent pour tous les intervenants d'un projet.
nonilastar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2008, 21h30   #85
zegreg
Nouveau Membre du Club
 
Inscription : août 2005
Messages : 73
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 73
Points : 35
Points : 35
Citation:
Envoyé par nonilastar Voir le message
Dans une utilisation raisonné ça peut améliorer la lisibilité du code. Il faut se donner des limites et je pense que cette amélioration peut être forte avantageuse.
Je vois pas en quoi ça peut apporter de la lisibilité (... .maMethode vs obj.maMethode) avec ce qui existe déjà, désolé... Encore une fois les chainages devraient être évités. Ou comme j'ai déjà dit, fait un return this dans tes setters, si ça démange tant que ça de faire des chaînage. En tout cas pour moi c'est une très mauvaise idée qui n'ajouterait que de l'incohérence au niveau de la logique, void c'est n'est pas this!!!
zegreg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2008, 16h33   #86
lvr
Membre éprouvé
 
Avatar de lvr
 
Inscription : avril 2006
Messages : 607
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 607
Points : 488
Points : 488
Contre.

void c'est void. Donc si le designer de la classe n'a pas prévu de retourner l'objet, il n'y a pas de raison de contourner ce choix.
lvr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 21h18   #87
TPReal
Membre à l'essai
 
Inscription : novembre 2007
Messages : 17
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : novembre 2007
Messages : 17
Points : 20
Points : 20
Exactement, void c'est void. Si on veut construire choses comme objet.met1().met2(). ..., on peut bien changer les types, et retourner 'this' a la fin de chacune method.
TPReal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2008, 21h30   #88
JHelp
Membre actif
 
Avatar de JHelp
 
Inscription : octobre 2002
Messages : 185
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 185
Points : 189
Points : 189
Résolument contre.
Je penses pas que ça soit plus clair, au contraire on a bien du mal à comprendre ce que fait une longue ligne d'instruction. C'est comme les phrases vaut mieux des courtes que des interminables. Sinon on en perd le début en les relisant.
Et puis void c'est void, pourquoi changer son type ?

Citation:
Envoyé par bulbo Voir le message
Et quel est le gain ? C'est surtout ça qu'il faut voir..

- Est-ce que cela permet de faire quelque chose d'impossible auparavant ? Non, on ne chainait pas mais c'est juste du sucre syntaxique, juste une nouvelle manière d'écrire les appels aux méthodes.

- Est-ce que c'est plus lisible: Non si une méthode ne retourne pas void au milieu de l'enchainement on va appeler une méthode sur un autre objet en cours de route.

- Est-ce plus maintenable: Non en cas d'exception il y a je ne sais pas combien d'appels sur la même ligne, attention a ne pas se planter lors de l'analyse du chainage qui a provoqué l'exception.

- Est-ce plus rapide a écrire: oui on économise le nom de la variable, quelle fête..

- Est-ce que cet avantage vaut le coup d'introduire tout ces inconvénients sachant que ça ne permet rien de nouveau au final ?

Lorsque j'étais encore a la fac et qu'on nous farcissait la tête de conseils pour écrire du code propre, il y avait ce petit conseil parmi d'autre, genre aéré votre code, pas plus d'une instruction par ligne ... pour moi la il y a conflit avec la proposition.
Et aller a la ligne pour chaque chainage n'est pas beaucoup plus propre car il manquera une info sur la ligne, la variable, qu'il faudra aller chercher je ne sais pas combien de lignes plus haut..

Bien souvent on n'écrit le code qu'une fois mais on le relit plusieurs, je préfère perdre du temps une fois si ça m'en fait gagner plusieurs fois par la suite..

Bulbo
+1

JHelp
__________________
Pour avoir une réponse efficace :
1) Soyez précis dans vos questions
2) Choisssez bien votre forum
3) Consultez la FAQ et la doc avant
JHelp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2008, 17h37   #89
pala00
Candidat au titre de Membre du Club
 
Inscription : mai 2008
Messages : 10
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 10
Points : 10
Points : 10
Contre aussi pour diverses raison évoquées précédemement mais aussi parce que ça limite l'extension suivante:

Vous faites une méthode qui renvoi void, et vous voulez changer la methode pour quelle renvoi true ou false par exemple. Vous allez casser tous les codes qui font du chainage.

le .. me plait bien.

sinon avoir un self plutot qu'un void dans la déclaration de la fonction:

genre
Code :
1
2
3
public self setTime(){
...
}
quel intéret:

-pas besoin de faire le return this il est implicite:
-la déclaration précise que le type renvoyé EST this et pas une copie.
-l'objet renvoyé est du même type que l'objet d'origine, donc pas de problème de cast dans un hierarchie.

prenons le cas actuel:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
public class Toto{
   public Toto setTime(){
     // fait un truc
   return this;
  }
}
public class SubToto extends Toto{
   public SubToto print(){
     // fait un autre  truc
   return this;
  }
}
 
SubToto toto=new SubToto();
toto.setTime().print();  // <- ne marche pas setTime renvoie Toto qui n'a pas 
                               // de méthode print
pala00 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2008, 22h11   #90
zhamdi
Invité régulier
 
Zied Hamdi
Inscription : juillet 2007
Messages : 10
Détails du profil
Informations personnelles :
Nom : Zied Hamdi

Informations forums :
Inscription : juillet 2007
Messages : 10
Points : 7
Points : 7
Par défaut oui definitivement

Une méthode void peut très bien retourner l'instance meme. Ce code ne destabilise pas...
zhamdi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2008, 12h36   #91
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
Citation:
Envoyé par bulbo Voir le message
Lorsque j'étais encore a la fac et qu'on nous farcissait la tête de conseils pour écrire du code propre, il y avait ce petit conseil parmi d'autre, genre aéré votre code, pas plus d'une instruction par ligne
T'as de la chance, mon prof de C du CMI de Marseille écrivait tout un programme sans une boucle for(){}. Imbitable.
Je suppose que ce genre de proposition lui ferait plaisir.
__________________
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 19/05/2008, 18h39   #92
Tommy31
Membre Expert
 
Homme Chris Camel
Architecte de système d'information
Inscription : novembre 2006
Messages : 1 242
Détails du profil
Informations personnelles :
Nom : Homme Chris Camel
Âge : 37
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Architecte de système d'information
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : novembre 2006
Messages : 1 242
Points : 1 892
Points : 1 892
Citation:
Envoyé par JHelp Voir le message
Résolument contre.
Je penses pas que ça soit plus clair, au contraire on a bien du mal à comprendre ce que fait une longue ligne d'instruction. C'est comme les phrases vaut mieux des courtes que des interminables. Sinon on en perd le début en les relisant.
Si c'est bien indenté ca peut passer:
Code :
1
2
3
4
5
 
cv.addPoint( 5, 5 )
  .addLine(  0, 0 )
  .addLine( 10,0 )
  .addLine( 10, 10);
Tommy31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2008, 11h14   #93
nonpoluant
Membre du Club
 
Inscription : août 2008
Messages : 47
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 47
Points : 46
Points : 46
D'accord, mais pas ecrit de cette façon. Comme je l'ai déjà lu dans d'autres postes, il faudrait une autre syntaxe. Donc j'vote pas.
nonpoluant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2008, 12h27   #94
lex2004
Membre du Club
 
Développeur informatique
Inscription : mai 2004
Messages : 49
Détails du profil
Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : mai 2004
Messages : 49
Points : 60
Points : 60
Je suis très contre!

Cela pourrait prêter à confusion sur le type de retour d'une méthode. Je serais plutôt pour un emprunt au langage Pascal:
Code :
1
2
3
4
5
6
7
8
 
with (objet) {
    methode1();
    methode2();
    methode3();
    variable1 = champ1;
    champ2 = variable2;
}
lex2004 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2008, 14h28   #95
fridobox
Membre à l'essai
 
Inscription : mars 2008
Messages : 20
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mars 2008
Messages : 20
Points : 22
Points : 22
Par défaut Mmmm

C'est vrai que le chaînage est un confort d'écriture.

Je ne suis pas pour le remplacement du type de retour. Comme certains l'on dit, ce n'est pas parce qu'une méthode retourne void que son action porte sur l'instance this.
J'ai eu par exemple une méthode copyAttributs(Object o) qui permettait de faire de o un clone de this. Chaîner cette méthode retournerait this alors qu'on souhaiterait travailler sur le clone o.
Et puis, c'est vrai qu'il vaut mieux prévoir cela dès la création de la classe (comme StringBuffer par exemple).

Je suis pour l'utilisation d'un bloc with.
Pour moi, cela devrait redéfinir l'instance implicite (qui actuellement est this) dans ce bloc. A l'intérieur du bloc, l'utilisation de this doit donc être explicite.
C'est par exemple utile pour une IHM :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class MyFrame extends JFrame {
 
  JLabel b;
 
  public MyFrame() {
    setText("my frame"); // c'est implicitement this.setText
    b = new JLabel();
    with b {
      setText("my label"); // c'est implicitement b.setText
      setBackground(Color.BLUE); 
      this.getContentPane.add(); // this doit être explicité et c'est implicitement add(b)
    }
    pack(); // c'est implicitement this.pack()
    setVisible(true); 
  }
}
Cela permet entre autre de faire évoluer le code à l'intérieur du bloc sans risquer de se tromper d'instance. C'est le risque lorsqu'il y a plusieurs objets du même type (par exemple Label b1 et Label b2), un mauvais copier/coller est vite arrivé.
fridobox 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 14h17.


 
 
 
 
Partenaires

Hébergement Web