Terkadang, sebuah if
pernyataan bisa jadi agak rumit atau panjang, jadi demi keterbacaan, lebih baik mengekstrak panggilan rumit sebelum if
.
misalnya ini:
if (SomeComplicatedFunctionCall() || OtherComplicatedFunctionCall())
{
// do stuff
}
ke dalam ini
bool b1 = SomeComplicatedFunctionCall();
bool b2 = OtherComplicatedFunctionCall();
if (b1 || b2)
{
//do stuff
}
(contoh yang diberikan tidak terlalu buruk, itu hanya untuk ilustrasi ... bayangkan panggilan lain dengan banyak argumen, dll.)
Tetapi dengan ekstraksi ini saya kehilangan evaluasi sirkuit pendek (SCE).
- Apakah saya benar-benar kehilangan SCE setiap saat? Apakah ada skenario di mana kompilator diizinkan untuk "mengoptimalkannya" dan masih menyediakan SCE?
- Adakah cara untuk menjaga agar cuplikan kedua tetap terbaca tanpa kehilangan SCE?