Mam sytuację, w której muszę sprawdzić wiele warunków, gdzie każda kombinacja ma inny wynik. W moim szczególnym stanie mam 2 zmienne, które są typami enum, które mogą mieć 2 różne wartości.Sprawnie sprawdź wiele warunków
Daje to 4 możliwe warunki, które wymagają 4 różnych rezultatów. Mam wymyślić kilka różnych sposobów w ten sposób, albo za pomocą instrukcji if lub oświadczeń przełącznika:
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
}
Lub:
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;
}
myślałem o innych, ale nie chcą aby wypełnić ten kod: P Chciałbym wiedzieć, jak najlepiej to zrobić. Myślę, że zmiana jest nieco łatwiejsza do odczytania, ale jeśli są krótsze. Myślę, że byłoby naprawdę fajnie, gdyby przełączniki mogły mieć wiele warunków, ale nie słyszałem o tym. To również nasuwa pytanie: jaki jest najlepszy sposób na zrobienie tego z dowolną liczbą zmiennych i możliwych wartości?
Jeśli robisz to w sposób * poważny *, to prawdopodobnie użyjesz silnika reguł lub innego systemu zewnętrznego, który wyodrębni cały kod. – Kayaman
Dlaczego trzeba sprawdzać wiele takich warunków? Co właściwie robisz? Może to zostać rozwiązane w lepszy sposób dzięki przeprojektowaniu, zamiast próbować decydować między ifs i switchami. – Kayaman
https://en.wikipedia.org/wiki/Chain-of-responsibility_pattern –