¿Puede hacer algunas suposiciones sobre x, y, z, q? e.G. solo uno de ellos puede ser cierto. Lo que podría verlo como un Estado
enum State {
X{
void doSomething(){
doItTheXWay();
}
},
Y{
void doSomething(){
doItTheYWay();
}
},
Z{
void doSomething(){
doItTheZWay();
}
},
Q{
void doSomething(){
doItTheQWay();
}
};
void doSomething(){
}
}
y en su código en el que utiliza las sentencias if
podría asignar un estado y simplemente hacer lo correcto
State state = getAState();
state.doSomething();
En caso de que no me gusta enums Estado podría ser una interfaz y X a Q podría estar implementando clases. Los beneficios en este caso se basan en el uso múltiple del mismo constructo if else. Dicen algunos codelines más tarde comenzarían con
if(x)
do_the_next_thing_with_X();
...
o usted podría ampliar su enumeración con otra función y hacer una sola llamada
state.doTheNextThing();
@Thirler Hmm, que se anule el propósito de cortocircuito evaluación. Creo que, en promedio, suponiendo igual probabilidad y complejidad de tiempo de x, y, z y q esto sería un aumento de rendimiento. Pero, ¿y si la probabilidad de z es del 50% y requiere poco procesamiento, mientras que la probabilidad de q es del 1% y toma el 95% de la potencia de procesamiento? Vea cómo la micro-optimización puede causarle problemas sin las métricas adecuadas? –
Sí, necesitamos utilizar como máximo una variable para hacer eso, marque – Halo
@Tim Necesita condiciones extremadamente largas (o código que se ejecuta millones de veces) para que esto sea una pérdida de rendimiento.Ciertamente no estoy optimizando (la pregunta no habla de eso), sugiero mejorar el mantenimiento. Si el rendimiento es importante, deberá amortiguar el resultado del cálculo de forma transparente (ocultarlo detrás de una función que almacena el resultado). Tenga en cuenta que el ejemplo dado ejecuta algunas condiciones dos veces. Pero una buena regla es no optimizar en absoluto hasta que vea que le lleva mucho tiempo ejecutarla. – Thirler