Manchmal kann eine if
Anweisung ziemlich kompliziert oder lang sein. Aus Gründen der Lesbarkeit ist es daher besser, komplizierte Aufrufe vor dem zu extrahieren if
.
zB das:
if (SomeComplicatedFunctionCall() || OtherComplicatedFunctionCall())
{
// do stuff
}
das mögen
bool b1 = SomeComplicatedFunctionCall();
bool b2 = OtherComplicatedFunctionCall();
if (b1 || b2)
{
//do stuff
}
(vorausgesetzt, das Beispiel ist nicht so schlecht, es dient nur zur Veranschaulichung. Stellen Sie sich andere Aufrufe mit mehreren Argumenten usw. vor.)
Aber mit dieser Extraktion habe ich die Kurzschlussbewertung (SCE) verloren.
- Verliere ich wirklich jedes Mal SCE? Gibt es ein Szenario, in dem der Compiler "es optimieren" und dennoch SCE bereitstellen darf?
- Gibt es Möglichkeiten, die verbesserte Lesbarkeit des zweiten Snippets beizubehalten, ohne SCE zu verlieren?