En option vs if / else, si la performance java 8

Panos K:

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

Lino:

Ne pas utiliser Optionals 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 Nobjets en cours de création, puis mis au rebut. Il suffit de rester avec vos « normaux » if-elsechaî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.

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=228892&siteId=1
conseillé
Classement