Bonjour!
Y aurait-il une méthode plus élégante d'effectuer le test suivant ?Merci d'avance!
Code : Sélectionner tout - Visualiser dans une fenêtre à part if(codeSousProduit.equals("05")||codeSousProduit.equals("27")||codeSousProduit.equals("28"))
Bonjour!
Y aurait-il une méthode plus élégante d'effectuer le test suivant ?Merci d'avance!
Code : Sélectionner tout - Visualiser dans une fenêtre à part if(codeSousProduit.equals("05")||codeSousProduit.equals("27")||codeSousProduit.equals("28"))
Ben malheuresement Non ! ça se saurait si ça existait.
Merci de lire les règles du forum et surtout celle là Message clair et précis.
Evitons les ctrl c ctrl v => Ne sortons pas les codes de leur contexte sinon ça ne marche pas.
Si tu as beaucoup de valeurs à tester, tu peux mettre tes String dans un set. Par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Set<String> set = new HashSet<>(); set.add("05"); set.add("28"); set.add("27"); if (set.contains(codeSousProduit)) { // traitement }
Autre possibilité :
Au delà de l'élégance, l'intérêt de cette solution, ainsi que celle d'AlexRNL,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7String valeursOk = "[05][27][28]"; String codeSousProduit = "27"; if (valeursOk.contains("[" + codeSousProduit + "]")){ System.out.println("gagné"); }
c'est de pouvoir construire dynamiquement ta condition.
La liste "05","27","28" va certainement évoluer et si tu restes sur le code présenté, il te faudra reprendre ton application.
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
Si ton code est sur deux caractère tu peux faire ça
et si développe pour le plaisir un truc du genre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 int x = Integer.parseInt(codeSousProduit); if ((x-5)*(x-27)*(x-28)==0)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 int x = Integer.parseInt(codeSousProduit); if (x*x*x-70*x*x+1031*x==-3780)
Joli bricolage très geek, mais on a parlé d'élégance, ce qui en général est plutôt question de maintenabilité et de faire les choses de sorte qu'elles soient immédiatement évidentes.
Certes c'est pas des maths très compliqués, mais ils ne se justifient pas.
C'est certes très très efficace. Mais une table de hachage l'est suffisamment, sans dépendre du contenu des String, et pour être honnête String.contains() est suffisant aussi.
Et, plus important, if(x == 5 || x == 27 || x == 28) est encore plus efficace, et est essentiellement la même chose en plus clair.
C'est vendredi aprem! On peut se permettre un peu de relâchement.
Je peux t'assurer que le, j'aurais jamais essayé de le simplifier!
Code : Sélectionner tout - Visualiser dans une fenêtre à part if(codeSousProduit.equals("05")||codeSousProduit.equals("27")||codeSousProduit.equals("28"))
ben, là, j'aurais quand même évité.
Je parie des dollars contre des gâteaux secs(*) que ce code a été écrit dans la plus grande urgence sous la menace d'un revolver sur la tempe.
A l'évidence il s'agit d'une codification présente dans la table produits d'un programme de gestion.
Quand dans un an ou deux, avec le nouveau DAF (**), on changera la codification , ça ne marchera plus et on cherchera en vain où on peut paramétrer le bouzingue avec la nouvelle codification !
(*) citation empruntée à Lucky Luke
(**) directeur administratif et financier -> dès qu'un nouveau arrive, il veut changer quelque chose dans le SI
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
on m'a garanti que la liste de ces valeurs ne changerait pas de si tôt![]()
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
Allez, c'est samedi matin.
Autre solution
Ca a au moins l'avantage d'être court et facile à lire, à défaut d'être performant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (Arrays.asList(new String[]{"05","27","28"}).contains(lavaleur))
Allez, encore une, un peu plus élégante (java 7 requis) et performante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 switch (codeSousProduit) { case "05": case "27": case "28": // ton code break: default: // ton else :) }
Sympa pour la version java 7,
C'est vrai que le switch était limité avant
ça sera plus facile de vérifier la version de la JVMVu que les précédente version de java ne supporte pas, a utiliser avec beaucoup de prudence suivant ou le code doit etre execute.
que d'être sûr que le client ne changera pas sa codification d'articles !
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
Merci de lire les règles du forum et surtout celle là Message clair et précis.
Evitons les ctrl c ctrl v => Ne sortons pas les codes de leur contexte sinon ça ne marche pas.
A noter que depuis Java 5.0 on peut l'écrire d'une manière bien plus lisible grace à l'ellipse :
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (Arrays.asList("05","27","28").contains(lavaleur))
[edit] Et si on veut de la performance, il suffit de passer par un Set...
a++
Partager