break
Często zastanawiam się nad tym, czy mogę to uwzględnić po ostatnim przypadku default
.
switch (type) {
case 'product':
// Do behavior
break;
default:
// Do default behavior
break; // Is it considered to be needed?
}
break
moim jedynym celem jest zatrzymanie uruchamiania kodu przez resztę switch
skrzynki.
Czy zatem uważa się za bardziej logiczne, aby mieć break
ostatnią ze względu na spójność lub pominąć ją ze względu na break
brak zastosowania funkcjonalnego? Oba są moim zdaniem logiczne na różne sposoby.
Można to do pewnego stopnia porównać z zakończeniem .php
pliku ?>
. Nigdy nie kończę, ?>
głównie ze względu na ryzyko generowania pustych miejsc, ale można argumentować, że logicznym rozwiązaniem byłoby zakończenie pliku.
źródło
break
ostatnia sprawa również :)break
(lub inna instrukcja sterowania przepływem, która wychodzi zcase
) jest technicznie potrzebna po ostatniej alternatywie.switch
przechodzeniem w istniejących językach i chcieli im zapobiec. Reguły C # narzucają się w zasadzie z zaleceniami z mojej odpowiedzi.break
jako NO-OP zamiast generowaćjmp
instrukcję do następnej instrukcji, prawda?Biorąc pod uwagę niejednoznaczność, jaka istnieje wokół używania
switch-case
w większości języków, podczas korzystania z niego sugerowałbym, aby zawsze używaćbreak
oświadczenia, z wyjątkiem przypadków, gdy jest to wyraźnie i z założenia niepożądane .Częściowo dzieje się tak, ponieważ sprawia, że każde
case
połączenie wygląda tak samo, co moim zdaniem poprawiłoby czytelność. Ale oznacza to również, że jeśli ktoś (nawet ty) zdecyduje się wstawićcase
po ostatnim na późniejszym etapie, nie musi zajmować się sprawdzaniem poprzedniego bloku, co może pomóc w zmniejszeniu błędów podczas dodawania nowego kodu.źródło
case foo: case bar: ...
), umieszczam wyraźny komentarz, że chcę, aby nastąpiła awaria. Sprawia, że jest to wyraźniejsze.// no break
zamiastbreak;
[[fallthrough]]
atrybut w przypadku C ++.break
Po ostatnim przypadku nie jest konieczne . Używam słowa „ ostatni ” (nie domyślny ), ponieważ nie jest to konieczne, domyślny przypadek to ostatni przypadek.I wiemy, że
break
konieczne jest a pomiędzy dwoma kolejnymicase
s. Czasami używamif(a!=0)
w swoim kodzie dla większej czytelności, gdy inni odsyłają mój kod. Mogę wybrać użycieif(a)
, to byłby mój wybórźródło
case
na końcu twojego,switch
nie sprawdzając,break
czy on istnieje (byłaby to wina programisty, ale lepiej być bezpiecznym - jeśli z jakiegokolwiek powodu, ponieważ możesz zostać programistą za 6 miesięcy-),
na końcu tablic, w przypadku wstawienia nowej wartości. To jednak łamie niektóre kody i ogólnie wygląda brzydko :),
. Incase,default
został zaprojektowany jako ostatni przypadek. Może język uznałbybreak
go za błąd. Zakładając, żebreak
dozwolone było rozróżnienie TYLKO dwóch przypadków.