A volte, if
un'istruzione può essere piuttosto complicata o lunga, quindi per motivi di leggibilità è meglio estrarre chiamate complicate prima del file if
.
ad esempio questo:
if (SomeComplicatedFunctionCall() || OtherComplicatedFunctionCall())
{
// do stuff
}
in questo
bool b1 = SomeComplicatedFunctionCall();
bool b2 = OtherComplicatedFunctionCall();
if (b1 || b2)
{
//do stuff
}
(l'esempio fornito non è così male, è solo a scopo illustrativo ... immagina altre chiamate con più argomenti, ecc.)
Ma con questa estrazione ho perso la valutazione del corto circuito (SCE).
- Perdo davvero SCE ogni volta? C'è qualche scenario in cui il compilatore è autorizzato a "ottimizzarlo" e continuare a fornire SCE?
- Esistono modi per mantenere la leggibilità migliorata del secondo snippet senza perdere SCE?