Às vezes, uma if
instrução pode ser um tanto complicada ou longa, portanto, por uma questão de legibilidade, é melhor extrair chamadas complicadas antes de if
.
por exemplo:
if (SomeComplicatedFunctionCall() || OtherComplicatedFunctionCall())
{
// do stuff
}
nisso
bool b1 = SomeComplicatedFunctionCall();
bool b2 = OtherComplicatedFunctionCall();
if (b1 || b2)
{
//do stuff
}
(desde exemplo não é que ruim, é apenas para ilustração ... imaginar outras chamadas com múltiplos argumentos, etc.)
Mas com esta extração perdi a avaliação de curto-circuito (SCE).
- Eu realmente perco o SCE todas as vezes? Existe algum cenário onde o compilador pode "otimizá-lo" e ainda fornecer SCE?
- Existem maneiras de manter a legibilidade aprimorada do segundo snippet sem perder o SCE?