Иногда оператор if
может быть довольно сложным или длинным, поэтому для удобства чтения лучше извлечь сложные вызовы до if
.
например. это:
if (SomeComplicatedFunctionCall() || OtherComplicatedFunctionCall())
{
// do stuff
}
в этот
bool b1 = SomeComplicatedFunctionCall();
bool b2 = OtherComplicatedFunctionCall();
if (b1 || b2)
{
//do stuff
}
(приведенный пример не так уж плох, он просто для иллюстрации... представляет другие вызовы с несколькими аргументами и т.д.)
Но при этом извлечении я потерял оценку короткого замыкания (SCE).
- Я действительно теряю SCE каждый раз? Есть ли какой-то сценарий, когда компилятору разрешено "оптимизировать его" и по-прежнему предоставлять SCE?
- Есть ли способы сохранить улучшенную читаемость второго фрагмента без потери SCE?