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