|
|||||||
| Débats Les débats et sondages sur le langage et les technologies Java |
|
|
Publicité ' | |||||||||||||||||
|
|
|
Outils de la discussion |
|
|
#21 | |
|
Membre émérite
![]() ![]() Inscription : février 2004 Messages : 831 ![]() |
Citation:
Ce qui aujourd'hui est élégament réglé avec les énums ...
__________________
Netbeans account : nico@share.java.net Merci de ne pas poser de questions techniques par MP |
|
|
|
00
|
|
|
#22 | |
|
Membre Expert
![]() ![]() Inscription : juillet 2006 Messages : 765 ![]() |
Citation:
Je renchéris : le Java, ce n'est pas du PHP. Je vote contre ! Par contre, pourquoi ne fait-on pas un switch d'objet ? Pour quelques algorythmes complexes, je renvois soit un Integer, soit un Objet complexe. Un switch basé sur les références est 100% entretenable en refactoring, non ?
__________________
Robusta Web Library : Clients RESTful open source pour Java, Android & GWT. API Simple et Productive. Avec style. |
|
|
|
00
|
|
|
#23 |
|
Membre actif
![]() Hugo CAPOCCIDéveloppeur Java/J2EE - Intégrateur Filenet - expert ecm/bpm Inscription : octobre 2005 Messages : 100 ![]() |
Contre...
Car bien que ça parte d'une bonne intention au départ, cela implique des complications inutiles car d'autres pratiques équivalentes (et pas plus lourdes - genre Enum) existent. 3 ans que je code en java en m'en passant très bien perso... Les complications inutiles que j'y voit : - Implémenter switch/case avec des String mais pas avec tous les objets ne serait ABSOLUMENT PAS dans la philosophie objet (de java en tout cas) En effet pourquoi une opération fonctionnertait avec UN type d'objet et pas avec les autres ? Ce serait une première ! (non ?) - Avec les IDE, simplifier la syntaxe de Java ne servira pas à grand chose je pense et ça alourdirait ou impliquerait des modifications plus ou moins significatives de la JVM pour un gain très peu significatif. - Un NullPointerException potentiel... |
|
00
|
|
|
#24 | |
![]() ![]() Inscription : septembre 2004 Messages : 1 628 ![]() |
Je suis d'une même avis que coyote.
Citation:
|
|
|
00
|
|
|
#25 | ||
|
Expert Confirmé
![]() ![]() Inscription : janvier 2006 Messages : 2 344 ![]() |
Les String sont souvent utilisées un peu partout comme clés (ActionCommand, Layout, etc.).
Apporter un switch se révèlera très intéressant pour tous ces endroits où il faut soit faire des if/else, soit créer une enum et faire des astuces style : Code :
Alors oui pour le switch sur String. Contre le switch généralisé car créer une instance d'un objet par case juste pour comparer, ça va pas me plaire du tout
__________________
Ma page dvp.com
|
||
|
|
00
|
|
|
#26 | |
|
Membre Expert
![]() ![]() David Inscription : novembre 2005 Messages : 1 244 ![]() |
Citation:
Sinon perso, ayant fait du C# et considérant le fait que le switch sur les String est possible en C#, je suis plutôt pour avoir la même chosee en Java.
__________________
“THERE IS NO JUSTICE. THERE’S JUST ME!” |
|
|
|
00
|
|
|
#27 | |||
|
Expert Confirmé Sénior
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 657 ![]() |
Citation:
Mais les String sont quand même des objets bien particulier, il possède leurs propre littéral et pas mal de spécificité par rapport aux autres objets. En particulier ils peuvent être utilisé comme constante (et donc déterminé à la compilation). Et un switch est quand même bien plus pratique qu'un suite de if/else ou qu'un grosse Map d'association... En parlant des switch j'aimerais bien également avoir la possibilité d'utiliser un interval de données avec les types numériques, par exemple : Code :
a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
|||
|
00
|
|
|
#28 | |||
![]() ![]() Inscription : novembre 2006 Messages : 5 087 ![]() |
Citation:
|
|||
|
|
00
|
|
|
#29 | |||||
|
Membre Expert
![]() ![]() David Inscription : novembre 2005 Messages : 1 244 ![]() |
Citation:
Non en fait je voulais dire que par exemple on pouvait faire ça : Code :
Code :
En java 5 ça marche quand même avec les types wrappers du fait de l'auto-(un)boxing.
__________________
“THERE IS NO JUSTICE. THERE’S JUST ME!” |
|||||
|
|
00
|
|
|
#30 |
|
Membre expérimenté
![]() ![]() |
Trop longtemps que j'attend cette fonctionnalité
|
|
00
|
|
|
#31 |
![]() ![]() Inscription : avril 2003 Messages : 930 ![]() |
je suis complètement pour.
|
|
00
|
|
|
#32 |
|
Membre confirmé
![]() Inscription : juillet 2002 Messages : 621 ![]() |
On peut pas pousser plus loin le langage ?
Avec les primitifs on compare à la fois l'égalité et l'identité Avec les strings on compare le concept d'égalité. On devrait pouvoir faire cette comparaison avec tout type d'objet. Et mieux switch equality{ } pour un equals switch identity{ } pour un == |
|
|
00
|
|
|
#33 |
|
Expert Confirmé
![]() ![]() Inscription : janvier 2006 Messages : 2 344 ![]() |
C'est dangereux de vouloir trop en faire.
Je ne vois pas vraiment de besoin pour les autres types d'objets.
__________________
Ma page dvp.com
|
|
|
00
|
|
|
#34 |
|
Membre à l'essai
![]() |
Comme dit par plusieurs d'entre vous , je suis pour parce que c'est clair que dans certains cas ( ils ne sont pas nombreux non plus ) cette possibilité m'a énormément manqué, mais il faut quand même ne pas oublier que les enums ont souvent palier à ce problème.
|
|
|
00
|
|
|
#35 |
|
Membre habitué
![]() Développeur informatique Inscription : août 2006 Messages : 221 ![]() |
Je suis pour aussi à 200%.
Cà manquait vraiment et c' est très pratique ! |
|
|
00
|
|
|
#36 |
|
Membre Expert
![]() ![]() Inscription : février 2004 Messages : 1 833 ![]() |
Je suis pour, principalement parce que les Strings sont historiquement utilisés comme clé/constante dans pas mal de coins de l'API. Par contre je trouve que ça ne suffit pas, il faudrait généraliser ça, parce qu'il est mieux d'avoir une règle qu'une exception, et l'étendre sur tous les Objets avec la méthode equals. Libre au développeur de surcharger cette méthode pour utiliser l'égalité pointeur ==.
|
|
|
00
|
|
|
#37 |
|
Invité de passage
![]() Étudiant Inscription : mai 2007 Messages : 2 ![]() |
Le switch avec des Strings simpifiera la vie des développeurs dans de nombreux cas:
1-Dans les factory on pourra faire un switch sur le nom de la classe 2-Dans les MVC switch sur les actions Les if-else sont mort, vive les siwtch !! |
|
|
00
|
|
|
#38 | |
|
Expert Confirmé Sénior
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 657 ![]() |
Citation:
Perso si je suis plutôt pour le switch sur les String, je ne suis pas d'accord pour le généraliser à tous les objets... a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
|
|
00
|
|
|
#39 | |
![]() ![]() Inscription : septembre 2004 Messages : 1 628 ![]() |
Citation:
Personnellement, je pense que les utiliser dans ces cas font du mauvais code à moins que j'ai mal compris ou que des exemples concrets me soient montré. Pourquoi faire un switch dans les factory ? Pour choisir une implémentation particulière ? Mieux vaut à mon avis faire une injection de dépendance (via Spring ou autre, un simple fichier de paramétrage par exemple) ou bien un tableau de String avec une constante pour l'indice. Pour ce qui est du switch sur les actions, ce n'est pas mieux !!! Cela me rappelle une blague d'un prof sur les menus : Un développeur débutant fait un test de l'item du menu pour déclencher l'action appropriée. Un développeur de chez Microsoft fait une étude statistique pour mettre en haut du menu (et tester en premier) les items qui ont le plus de chance d'être executé. Un développeur de C++ fait un tableau de pointeur de fonctions. En tant que développeur Java, je code des objets actions avec une méthode execute qui fait directement mon traitement sans faire une suite de tests (switch ou pas ...) |
|
|
00
|
|
|
#40 |
|
Membre confirmé
![]() Inscription : mars 2007 Messages : 259 ![]() |
Euh moi je le ferai pas avec un == ce switch, l'appel du equals() fait très bien l'affaire, et ainsi ca serait généralisé aux objets et non plus aux Strings.
De plus ca ne se remplace pas toujours par des enum, par exemple une entrée utilisateur qui est une String on pourrait faire switch (val) { case "val1":faire un truc;break; case "val2":faire un truc;break; ... default : entréeinvalide;break; } Si on a un enum il faut déjà retrouver a quelle valeur de l'enum correspond la String |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com