Rozważ następujące dwa fragmenty z nawiasami klamrowymi:
switch (var) {
case FOO: {
x = x + 1;
break;
}
case BAR: {
y = y + 1;
break;
}
}
Bez szelek:
switch (var) {
case FOO:
x = x + 1;
break;
case BAR:
y = y + 1;
break;
}
Wiem, że we fragmencie z nawiasami klamrowymi nowy zakres jest tworzony przez ujęcie każdego przypadku w nawiasy. Jeśli jednak w każdym przypadku nie jest potrzebny nowy zakres (tj. Nazwy zmiennych nie są ponownie używane), czy istnieje jakikolwiek spadek wydajności w przypadku używania nawiasów klamrowych z wielkością liter?
źródło
Jak wiemy, szelki do obudów przełączników nie są konieczne. Stosowanie przypadków z nawiasami klamrowymi może powodować niejasności co do zakresu sprawy.
Nawias otwierający jest zwykle powiązany z czymś znaczącym, jak początek funkcji lub początek pętli, początek deklaracji klasy lub początek inicjalizacji tablicy itp. Wiemy, że przypadek wyrywa się z bloku przełącznika, gdy napotyka przerwę komunikat. Tak więc użycie nawiasów klamrowych wydaje się sugerować ignorantowi czytelnikowi inny zakres przypadku. Dlatego lepiej unikać nawiasów klamrowych ze względu na lepszą czytelność programowania.
tj. kiedy mam coś takiego,
switch(i) { case 1 : { //do something } System.out.println("Hello from 1"); case 2: .... }
Zostanie wydrukowany komunikat „Hello from 1”. Ale użycie nawiasu klamrowego może sugerować ignorantowi czytelnikowi, że przypadek kończy się na '}', już wiedząc, co ogólnie oznaczają nawiasy klamrowe w przypadku pętli, metod itp.
Tak jak w przypadku instrukcji skoku do etykiety w „C”, kontrolka po prostu przesuwa się do wielkości liter i kontynuuje wykonywanie. Tak więc, mając to na uwadze, ZŁĄ praktyką jest używanie nawiasów klamrowych podczas pisania przypadków dla przełącznika.
Technicznie rzecz biorąc, możesz otoczyć dowolny blok swojego kodu dodatkową parą nawiasów klamrowych, jeśli jest używany z prawidłową składnią. Używanie nawiasów klamrowych w przełączniku wygląda tak źle, przynajmniej dla mnie, ponieważ wydaje się, że daje inne wrażenie, jak powiedziałem powyżej.
Moja sugestia: po prostu unikaj używania otaczających szelek w przypadku przełączników.
źródło
Z szelkami.
Jest tak wiele rzeczy, które mogą się nie udać w instrukcjach switch, staram się ich unikać, gdzie tylko mogę, tj
Korzystanie z nawiasów klamrowych jest jednym ze sposobów zapobiegania celowemu i przypadkowemu współużytkowaniu zmiennych między instrukcjami case
źródło
...case 1: int a = 10; break; case 2: int a = 11; break; ...
nie kompiluje się. (testowane z Oracle JDK 8)To pytanie prawdopodobnie zostanie zamknięte jako „kłótliwe” (BRACE WAR!), Ale co do cholery. Właściwie to lubię szelki po przypadkach. Dla mnie to sprawia, że brzydka składnia przełącznika wygląda bardziej jak reszta konstrukcji języka. (Nie ma kary za użycie nawiasów klamrowych w tym „przypadku”)
źródło
Mówisz, że nawiasy klamrowe można pominąć, ponieważ nazwy zmiennych nie są ponownie używane. Ponownie wykorzystując nazwy zmiennych, zakładam, że masz na myśli zadeklarowanie nowej zmiennej tego samego typu.
Nawiasy klamrowe są w rzeczywistości najbardziej przydatne, aby zapewnić, że
case
przez pomyłkę nie użyjesz ponownie tej samej zmiennej w różnych . Dziś nie deklarują żadnych zmiennych, ale jutro ktoś je doda i bez nawiasów klamrowych kod jest podatny na błędy.źródło
Nie użyłbym szelek do obudów przełączników.
Instrukcja switch wygląda dość barokowo już bez szelek.
Obudowy przełączników powinny być bardzo krótkie. Kiedy musisz zadeklarować zmienne, jest to znak, że robisz to źle.
Teraz zajmiemy się utrzymaniem starego kodu C, który obsługuje przełączniki z ponad 500 liniami ...
źródło
Nigdy wcześniej o tym nie myślałem. Nigdy nie potrzebowałem nawiasów klamrowych w klauzuli case, więc tak naprawdę nie rozumiem, dlaczego ich potrzebujesz. Osobiście nie opowiadam się za ideą „Łatwiej będzie w utrzymaniu”, to po prostu bzdura, będzie łatwiej utrzymać, jeśli kod ma sens i jest udokumentowany.
Bez nawiasów klamrowych ... mniej składni znaczy więcej
źródło