|
|||||||
| Débats Les débats et sondages sur le langage et les technologies Java |
|
|
Publicité ' | |||||||||||||||||
|
|
|
Outils de la discussion |
|
|
#81 | |||
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 818 ![]() |
Citation:
Code java :
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
|||
|
00
|
|
|
#82 | |||
|
Expert Confirmé Sénior
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 657 ![]() |
Citation:
Par exemple le switch est basé sur l'ordinal de l'enum, et avec cette méthode doEvil() tu as VALUE1 qui vaut VALUE2 : Code :
Mais bon le problème ne vient pas de String ou Enum mais d'une mauvaise utilisation de la réflection... a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
|||
|
00
|
|
|
#83 | |||
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 818 ![]() |
Citation:
Bon cela dit c'est vrai que tout ca n'a pas trop de rapport avec la discussion actuelle. Au fait, est-ce qu'il sera possible de sortir les "constantes" du switch ? Code java :
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
|||
|
00
|
|
|
#84 |
|
Expert Confirmé Sénior
![]() Inscription : avril 2002 Messages : 2 678 ![]() |
Ca paraitrait logique, vu que c'est le cas pour les int, char,...
En tout cas si ce n'est pas le cas ça serait génant. |
|
|
00
|
|
|
#85 | ||
|
Expert Confirmé Sénior
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 657 ![]() |
Citation:
Citation:
En fait cela dépend. Par exemple avec le code suivant : Par contre si tu a : Code :
final String YES = maMethodeQuiRenvoiYes(); Dans ce cas elle ne pourra pas non plus être utilisé dans un swith... Plus d'info sur les constantes dans la FAQ : Qu'est-ce qu'une constante ? a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
||
|
00
|
|
|
#86 |
|
Membre à l'essai
![]() Inscription : septembre 2005 Messages : 43 ![]() |
Bonsoir,
Je pense pas cette fonctionnalité va révolutionner le monde même si j'ai voté "pour". Pour avoir le "==" suffit d'appeler la méthode "intern". Je me demandais plutôt, si via une surcharge de l'opérateur "==" ou la méthode "equals" (pour rester dans "java" et non c++), on peut appeler switch sur Object. Cordialement. |
|
|
00
|
|
|
#87 |
|
Membre du Club
![]() Inscription : juin 2007 Messages : 109 ![]() |
j'ai voté pour, c'est tres utile!
merci
|
|
|
00
|
|
|
#88 | ||||
|
Expert Confirmé
![]() ![]() Inscription : janvier 2005 Messages : 2 807 ![]() |
Contre. Je ne vois pas l'intérêt.
Les switch pour moi ne servent que pour les enums (et avec les entiers, car avant les enums n'existaient pas). Ça permet de parcourir différents cas, par exemple, comme vu précédemment : Code :
Déjà que ça se fait déjà, et je trouve ça très moche, ça donnerait ça: Code :
Sans parler des problèmes de charset, de equalsIgnoreCase, etc... |
||||
|
|
00
|
|
|
#89 |
|
Membre Expert
![]() ![]() Inscription : mai 2002 Messages : 914 ![]() |
J'ai voté contre,
Je préfère garder la syntaxe if else pour les comparaisons d'objet et les switch case pour les enumérations (cela oblige la personne à faire des énumérations et évite les problèmes de "magic number" déjà trop récurent).
__________________
Etre c'est etre relatif. |
|
|
00
|
|
|
#90 | |||
|
Candidat au titre de Membre du Club
![]() Inscription : février 2008 Messages : 13 ![]() |
Pour cette proposition.
D'abord, je suis d'accord avec Uther et les autes intervenant qui ont préciser que le type String est un type tout a fait particuleir du langage Java. Les arguments contre cette proposition en raison du caractère Objet du langage ne me paraisse pas opportun dans ce cas, a moins que l'on souhaite remettre en question le statut si bizzare de String (ce qui est un autre débat, ... ) Par contre, l'argument de pseudocode résume assez bien ma perplexité Citation:
Code :
Donc, quand cela sera adopté, je ferais tout pour que, dans les standards de codage que nous utilisons, la String utilisée dans un Switch ne soit modifé dans ce même switch! |
|||
|
|
00
|
|
|
#91 | |
|
Expert Confirmé
![]() ![]() Inscription : janvier 2006 Messages : 2 344 ![]() |
Citation:
Sinon faire une erreur de compi.
__________________
Ma page dvp.com
|
|
|
|
00
|
|
|
#92 | ||
|
Expert Confirmé Sénior
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 657 ![]() |
Je ne comprend pas trop cet argument !?
La même chose est possible avec les switch numérique : Code :
![]() Par contre au niveau des case c'est sûr qu'il faudra obligatoirement une constante... a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
||
|
00
|
|
|
#93 | |
|
Candidat au titre de Membre du Club
![]() Inscription : février 2008 Messages : 13 ![]() |
Citation:
Ma remarque me parait d'ailleurs allé plus dans le sens de quelques bonnes pratiques et n'est pas pertinante pour rejeté la proposition. Par contre, pour ce qui concerne les valeurs dans le switch, et il prévu que les valeurs du switch soit final ??? |
|
|
|
00
|
|
|
#94 | |||
|
Expert Confirmé Sénior
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 657 ![]() |
Citation:
Pour rappel les valeur des cases doivent être des constantes : Code :
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
|||
|
00
|
|
|
#95 | |
|
Membre Expert
![]() ![]() Inscription : juillet 2006 Messages : 765 ![]() |
Citation:
__________________
Robusta Web Library : Clients RESTful open source pour Java, Android & GWT. API Simple et Productive. Avec style. |
|
|
|
00
|
|
|
#96 | |||||
|
Membre Expert
![]() ![]() Inscription : juillet 2006 Messages : 765 ![]() |
Citation:
Finalement c'est un peu le même problème qu'avec les JSP où tout passe par les chaines. Dans un contexte métier, utilisons les enums. Dans certains cas, il faut éviter la prolifération de Classes, ou d'Enum. Maintenant, je pense que ton enum NonOui.java pourra être vite rentabilisé : Code :
__________________
Robusta Web Library : Clients RESTful open source pour Java, Android & GWT. API Simple et Productive. Avec style. |
|||||
|
|
00
|
|
|
#97 | |||||
|
Membre régulier
![]() Inscription : mars 2005 Messages : 143 ![]() |
Citation:
Il est tout à fait possible de faire du code ultracrado avec n'importe quoi. Les arguments comme quoi on dirait, que faire directement avec un string sans passer par un enum est crade... on pourrait très facilement les retourner contre absolument tous les autres types primitifs du langages qui sont autorisés dans le switch. je ne vois pas en quoi un Code :
Code :
|
|||||
|
|
00
|
|
|
#98 | ||
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 818 ![]() |
A mon sens, le switch est plus propre avec un "enum" car on peut detecter les typos lors de la compilation:
Code java :
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
||
|
00
|
|
|
#99 | |
|
Expert Confirmé Sénior
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 657 ![]() |
Citation:
Attention que ce soit bien clair je ne dis pas que les enum sont une mauvaise solution ! Bien au contraire... Car en plus de la vérification à la compilation on peut également utilisé l'option -Xlint:fallthrough (ou -Xlint tout court) du compilateur javac pour obtenir un warning lorsqu'un switch sur une enum ne comporte pas toutes les valeurs de l'enum. Pratique car cela permet d'éviter d'oublier une valeur (cela se configure également sur les EDI). Concrètement dans le cas YES/NO une enum est intéressante car la liste des valeurs est fini, et que l'enum peut apporter pas mal de chose. Toutefois dans bien des cas on n'a pas forcément besoin d'un tel niveau de vérification, et surtout lorsque le besoin est unique à une méthode, ce qui fait que l'enum perd beaucoup de son intérêt. Un switch sur des String est à la fois très lisible et rapide à coder. De plus cela permet d'utiliser des chaines "exotiques" (comprendre : qui contient des caractères non-autorisés dans le nom d'un attribut). a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
|
|
00
|
|
|
#100 | ||
|
Membre régulier
![]() Inscription : mars 2005 Messages : 143 ![]() |
ouais mais là ça reste de la faute de frappe.
de la même manière Code :
Sinon oui bien évidement pour le control de type et tout le reste. L'enum reste la meilleure solution je suis d'accord. Je dis juste que je trouve pas ça con d'autoriser les string autant que les types primitifs. |
||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com