Od tak dawna, jak pamiętam, uniknąłem użycia instrukcji switch switchththrough. Właściwie to nie pamiętam, żeby kiedykolwiek wszedł do mojej świadomości jako możliwy sposób robienia rzeczy, jak to było wcześnie wywiercone w mojej głowie, że był niczym więcej jak błędem w instrukcji switch. Jednak dzisiaj natknąłem się na jakiś kod, który używa go z założenia, co sprawiło, że natychmiast zastanawiałem się, co wszyscy w społeczności myślą o przełomie w przełączaniu.Switch Statement Fallthrough ... czy powinno być dozwolone?
Czy jest to coś, na co język programowania wyraźnie nie powinien zezwalać (jak robi C#, ale zapewnia obejście) lub czy jest to funkcja dowolnego języka, który jest wystarczająco silny, aby pozostawić go w rękach programisty?
Edytuj: Nie byłem wystarczająco konkretny, co miałem na myśli przez przełom. Używam tego typu dużo:
switch(m_loadAnimSubCt){
case 0:
case 1:
// Do something
break;
case 2:
case 3:
case 4:
// Do something
break;
}
Jednak jestem zaniepokojony czymś takim.
switch(m_loadAnimSubCt){
case 0:
case 1:
// Do something but fall through to the other cases
// after doing it.
case 2:
case 3:
case 4:
// Do something else.
break;
}
W ten sposób, gdy przypadek ma wartość 0, 1, spowoduje to wszystko w instrukcji przełączania. Widziałem to z założenia i po prostu nie wiem, czy zgadzam się, że instrukcje przełączania powinny być używane w ten sposób. Myślę, że pierwszy przykład kodu jest bardzo przydatny i bezpieczny. Drugi wydaje się niebezpieczny.
dupe http://stackoverflow.com/questions/174155/switch-statement-fallthrough-in-c?lq=1 – nawfal
Nie zgadzam się co do braku konstruktywności. 27 głosów na temat tego pytania mówi, że są inni, którzy tak czują. –
"nie jest konstruktywny" to stary i nieco niejasny powód. W dzisiejszych czasach takie pytania mogą i powinny być oznaczane jako zamknięcia wyłącznie jako oparte na opiniach. SO to odpowiedzi na pytania dotyczące kodu lub projektu, a nie "jaka jest opinia" społeczności "[cokolwiek to jest] o mojej opinii na temat funkcji X". Programmingers.SE byłby lepszym rozwiązaniem, ale nawet wtedy wartość tak szerokiego i opartego na opiniach pytania jest nadal wysoce wątpliwa. –