A veces, una if
declaración puede ser bastante complicada o larga, por lo que en aras de la legibilidad es mejor extraer las llamadas complicadas antes del if
.
por ejemplo, esto:
if (SomeComplicatedFunctionCall() || OtherComplicatedFunctionCall())
{
// do stuff
}
dentro de esto
bool b1 = SomeComplicatedFunctionCall();
bool b2 = OtherComplicatedFunctionCall();
if (b1 || b2)
{
//do stuff
}
(proporcionado ejemplo no es que mal, es sólo para la ilustración ... imaginar otras llamadas con múltiples argumentos, etc.)
Pero con esta extracción perdí la evaluación de cortocircuito (SCE).
- ¿De verdad pierdo SCE cada vez? ¿Existe algún escenario en el que el compilador pueda "optimizarlo" y seguir proporcionando SCE?
- ¿Hay formas de mantener la legibilidad mejorada del segundo fragmento sin perder SCE?