У меня есть часть кода, которую я хочу оптимизировать для удобства чтения и производительности и охлаждения. Прямо сейчас у меня есть эта уродливая вещь:
if ( cond1 && cond2 && cond3 && !cond4)
{
// do something
}
else if ( cond1 && cond2 && !cond3 && cond4)
{
// do something
}
else if ( cond1 && !cond2 && cond3 && cond4)
{
// do something
}
else if (!cond1 && cond2 && cond3 && cond4)
{
// do something
}
else
{
// do something
}
где cond1
, cond2
, cond3
и cond4
являются логическими значениями, которые были инициализированы перед блоком кода выше. Я хочу сделать это быстрее, менее уродливым и более крутым.
Я думаю об этом:
int val = (cond1 ? 0 : 1) + 2 * (cond2 ? 0 : 1) + 4 * (cond3 ? 0 : 1) + 8 * (cond4 ? 0 : 1);
if (val == 8)
{
// do something
}
else if (val == 4)
{
// do something
}
else if (val == 2)
{
// do something
}
else if (val == 1)
{
// do something
}
else
{
// do something
}
Это работает или есть недостатки? Есть ли способ лучше? Каков типичный способ достижения желаемого результата при просмотре различных комбинаций нескольких условий?