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