Parfois, une if
instruction peut être assez compliquée ou longue, donc pour des raisons de lisibilité, il est préférable d'extraire les appels compliqués avant le if
.
par exemple ceci:
if (SomeComplicatedFunctionCall() || OtherComplicatedFunctionCall())
{
// do stuff
}
dans ce
bool b1 = SomeComplicatedFunctionCall();
bool b2 = OtherComplicatedFunctionCall();
if (b1 || b2)
{
//do stuff
}
(l'exemple fourni n'est pas si mal, c'est juste à titre d'illustration ... imaginez d'autres appels avec plusieurs arguments, etc.)
Mais avec cette extraction, j'ai perdu l'évaluation des courts-circuits (SCE).
- Est-ce que je perds vraiment SCE à chaque fois? Existe-t-il un scénario dans lequel le compilateur est autorisé à «l'optimiser» tout en fournissant SCE?
- Existe-t-il des moyens de conserver la lisibilité améliorée du deuxième extrait de code sans perdre SCE?