Opcional vs if / else, si el rendimiento de Java 8

Panos K:

Hola tengo dos muestras de código

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;
}

declaraciones opcionales

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)));
}

Así que mi pregunta es cómo estos dos se comparan en términos de rendimiento (tengo unos 15-20 else if-en código real)?

¿Vale la pena refactorización la legibilidad del código vs rendimiento o es un mal uso de opcionales?

También lo es la penalización de rendimiento en caso de que el if / else if-cultivadas a más de 100?

Gracias por adelantado

Lino:

No utilice Optionals para la lógica condicional.

Fueron diseñados, para ser devueltos a partir de un método para indicar un valor potencialmente ausente .

El hecho de que muy bien les puede encadenar en una sola línea, no significa que es comprensible. También que, literalmente, no gana nada. La sobrecarga de rendimiento puede ser significativo. En los peores casos de Nobjetos que están siendo creados y luego se descarta. Sólo se mantenga con sus "normales" if-elsecadenas.


En lugar de encontrar maneras de hacer su código actual sea más legible, tomar un paso atrás y preguntarse por qué necesita 15-20 declaraciones if-else. Se puede dividir un poco de lógica para arriba? ¿Por qué necesita un captador durante tantos campos diferentes con diferentes tipos potencialmente en el primer lugar? etcétera

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=228894&siteId=1
Recomendado
Clasificación