У меня есть ситуация, в которой мне нужно проверить несколько условий, когда каждая комбинация имеет другой результат. В моем конкретном состоянии у меня есть две переменные, которые являются перечисляемыми типами, каждая из которых может быть 2 разных значения.Эффективно проверять несколько условий
enum Enum1
{
COND_1,
COND_2
}
enum EnumA
{
COND_A,
COND_B
}
Enum1 var1;
EnumA varA;
Это дает мне 4 возможных условия, которые требуют 4 разных результатов. Я придумал несколько различных способов сделать это, либо с помощью если заявления или переключателя заявления:
if(var1 == Enum1.COND_1 && varA == EnumA.COND_A)
{
// Code
}
else if(var1 == Enum1.COND_1 && varA == EnumA.COND_B)
{
// Code
}
else if(var1 == Enum1.COND_2 && varA == EnumA.COND_A)
{
// Code
}
else if(var1 == Enum1.COND_2 && varA == EnumA.COND_B)
{
// Code
}
Или:
switch(var1)
{
case COND_1:
switch(varA)
{
case COND_A:
// Code
break;
case COND_B:
// Code
break;
}
break;
case COND_2:
switch(varA)
{
case COND_A:
// Code
break;
case COND_B:
// Code
break;
}
break;
}
Я думал о других, но не хотят для заполнения этого кода: P Я хотел бы знать, что лучший способ сделать это. Я думаю, что переключатель немного легче читать, но ifs короче. Я думаю, это было бы здорово, если бы переключатели могли иметь несколько условий, но я не слышал об этом. Это также задает вопрос: как лучше всего это сделать с произвольным числом переменных и возможными значениями?
Если вы делаете это * серьезно *, то вы, вероятно, будете использовать механизм правил или другую стороннюю систему, которая отбросит весь этот код. – Kayaman
Зачем вам нужно проверять несколько условий? Что вы на самом деле делаете? Это может быть решено лучше с редизайном вместо того, чтобы пытаться решить между ifs и switch. – Kayaman
https://en.wikipedia.org/wiki/Chain-of-responsibility_pattern –