Une expression Lambda peut-elle remplacer un opérateur ternair

a marqué ce sujet comme résolu.

Recoucou tout le monde,

Félicitez-moi! Je viens de faire usage de l'opérateur ternaire en Java pour la première fois de moi-même!

Voyez plutôt quel usage j'en ai fait:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
sql = "INSERT INTO FOOD_NAME (FOODID, FOODCODE, FOODGROUPID, FOODSOURCEID, FOODDESCRIPTION, "
+ "FOODDESCRIPTIONF, FOODDATEOFENTRY, FOODDATEOFPUBLICATION, COUNTRYCODE, SCIENTIFICNAME)"
+ " VALUES(" + nextLine[0] + ", " + nextLine[1] + ", " + nextLine[2] + ", " + nextLine[3] 
+ ", '" + nextLine[4].replaceAll("\'", "\"") + "', '" + nextLine[5].replaceAll("\'", "\"") + "', "
+ ((nextLine[6].compareTo("") != 0) ? ("PARSEDATETIME('" + nextLine[6] + "', 'yyyy-MM-dd'), ") : "NULL, ")
+ ((nextLine[7].compareTo("") != 0) ? ("PARSEDATETIME('" + nextLine[7] + "', 'yyyy-MM-dd'), ") : "NULL, ")
+ ((nextLine[8].compareTo("") != 0) ? nextLine[8] : "NULL") 
+ ", "
+ ((nextLine[9].compareTo("") != 0) ? ("'" + nextLine[9] + "'") : "NULL") 
+ ");";

Est-ce que j'aurais pu coder la condition d'une autre manière, peut-être meilleure ou plus simple et/ou efficace?

Aussi, aurais-je pu faire usage d'expressions lambdas à la place du ternaire? Si oui, ça ressemblerait à quoi?

A+ Nemo

+0 -0

Pour compléter ce que dit Taurre, et sans faire du Java non plus, ton code est pas très lisible et la ligne logique très longue. Rien que le fait que les lignes 5 et 6 soient quasi-identiques fait que tu devrais revoir ça avec une petite fonction ou autre chose.

Pour ta question générale, je ne pense pas q'une lambda puisse remplacer un opérateur ternaire. En Java en tout cas pas. Peut-être en python oui.

Sinon pour ton code plus spécifiquement, je plussoie les avis précédents, ce serait déjà beaucoup plus simple si tu utilisais des requêtes préparées, et des objets java.sql.Date dont la conversion est gérée automatiquement (y compris null=>NULL) plutôt qu'une magouille moche et potentiellement dangereuse. Avec des objets Date tu n'aurais même pas besoin d'utiliser d'opérateur ternaire.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte