Bonjour j'ai deux échantillons de code
if / else if / else
private Object getObj(message) {
if (message.getA() != null)
return message.getA();
else if (message.getB() != null)
return message.getB();
else if (message.getC() != null)
return message.getC();
else return null;
}
déclarations facultatives
private Optional<Object> wrap(Object o){
return Optional.ofNullable(o);
}
private Object getObj(message) {
return wrap(message.getA())
.orElseGet(() -> wrap(message.getB())
.orElseGet(() -> wrap(message.getC())
.orElse(null)));
}
Donc, ma question est de savoir comment ces deux comparer en termes de performance (j'ai environ 15-20 si-ELSE sur le code réel)?
Est-il utile refactoring la lisibilité du code vs performances ou un mésusage de optionals?
De plus, quelle est la pénalité de performance en cas if / else-if déclarations à 100+ cultivées?
Merci d'avance
Ne pas utiliser Optional
s pour une logique conditionnelle.
Ils ont été conçus, à retour d'une méthode pour indiquer une valeur potentiellement absente .
Tout simplement parce que vous pouvez bien les enchaîner en une seule ligne ne signifie pas qu'il est compréhensible. Vous gagnez littéralement rien non plus . Les frais généraux de performance peut être importante. Dans le pire des cas des N
objets en cours de création, puis mis au rebut. Il suffit de rester avec vos « normaux » if-else
chaînes.
Au lieu de trouver des façons de rendre votre code actuel plus lisible, prendre un pas en arrière et demandez-vous pourquoi vous avez besoin 15-20 déclarations if-else. Pouvez - vous partager une certaine logique up? Pourquoi avez - vous besoin d' un getter pour tant de domaines différents avec des types potentiellement différents en premier lieu? etc.