Aby odpowiedzieć na to pytanie, nie istnieje żaden powód do mieć coś, co nie robi nic. Pomyśl o tym w ten sposób, komentarz po return
zamiast break
powiedzenie "nie zapomnij" będzie miało ten sam wpływ - brak. I tak to brzmi głupio, prawda?
Jeśli nie musisz ustawić var, aby użyć go później, chciałbym zasugerować, że podejście, które masz, jest całkowicie w porządku. Znałem intencje kodu w ciągu 2 sekund od patrzenia na to. Posiadanie break
tylko wprowadza zamieszanie.
Nie ma jednego uniwersalnego rozmiaru. Prawidłowe podejście zależy od tego, który z nich pasuje do scenariusza. Ustaw zmienną w każdym case
, a posiadanie break
może być właściwą drogą, a może tylko powrót ma sens.
Niektóre obserwacje na inne sugestie w odpowiedzi:
1)nie mając break
po return
oznacza problemy mogą powstać, jeśli kod jest później zmienił
Wh możliwe, kod powinien być wyraźny, a także czytelny i czytelny. Możemy również kodować w taki sposób, aby ułatwić przyszłe zmiany. Ale w czymś tak prostym, jak switch
, nie powinno to stanowić problemu i nie potrzeba żadnej siatki bezpieczeństwa do późniejszej zmiany case
, aby dodać lub usunąć return
lub break
.
W rzeczywistości, jeśli wyjął return
i „nie zauważył nie było break
” to jest to biedny błędem i może być wykonane w dowolnej części kodowania. Żadne sprawdzanie cię nie uratuje. I trzeba bardzo ostrożnie kodować przyszłe potencjały, ponieważ ten potencjał może nigdy nie nastąpić, albo coś innego może się wydarzyć, a ty po prostu skończysz utrzymywać przestarzały kod przez lata.
W tym samym duchu argumentowano, że jest to sieć bezpieczeństwa dla przyszłych zmian - Co się stanie, jeśli usuniesz return
i przypadkowo pozostawiłeś w tej sieci bezpieczeństwa break
, kiedy powinieneś ją usunąć?
Nawet jeśli ta zmiana byłaby scenariuszem życia lub śmierci, naprawdę poważnym kodem, byłbym przeciwny dodaniu "bezsensownej" przerwy po powrocie.Upewnij się tylko, że ktokolwiek pracował nad kodem, wiedział, co robią, i został sprawdzony pod kątem wystarczającej liczby oczu i przetestowany w pełni.
Jeśli byłaby to poważna sprawa, lepiej byłoby przeprowadzić dodatkowe kontrole niż proponowana sieć bezpieczeństwa, aby złapać niechlujstwa.
Argument, że przerwa po powrocie dodaje siatkę bezpieczeństwa, oznacza, że nie kodujesz ani nie testujesz prawidłowo. Jeśli jest to sieć bezpieczeństwa uznana za użyteczną, prawdopodobnie istnieje mnóstwo błędów w kodzie w potencjalnie poważniejszych miejscach.
W artykule wiki z „Defensywny Programowanie” było związane, ale to nie jest istotne tutaj:
Defensive programowanie jest formą konstrukcji obronnej mające na celu zapewnienie ciągłą funkcję kawałek oprogramowania w nieprzewidzianych Okoliczności.
Pozostawienie siatki zabezpieczającej break
nie jest scenariuszem nieprzewidzianych okoliczności ani programowaniem defensywnym. To po prostu złe kodowanie, , a nie możesz zaśmiecać kodu z kodem zapasowym, na wypadek gdybyś nie poprawił kodu, gdy zmienisz coś.. To złe podejście do kodowania. Argument, że "jeśli ktoś usunięty zwróci, to nie zadziała", możesz również mieć literówkę w przypadku var, lub zapomnieć o napisaniu sprawy, lub ...
return
powraca, a ty nie t kod "defensywnie", aby uniknąć niepowodzenia powrotu. To by znaczyło, że PHP jest zepsute, a ty nie wypełnisz swojego kodu siatkami bezpieczeństwa, aby to zaspokoić. To coś, co masz na wyższym poziomie.
2)break
po return
utrzymuje ją wyraźne
Ale to wyraźnie źle. return
powraca, więc przerwa nie nastąpi. Dla mnie to czas na głowę, zastanawiając się, czy nie przeoczyłem intencji - nie na długo, ponieważ jasne jest, co się stanie, ale będzie moment, w którym zastanowię się nad tym, by upewnić się, że czegoś nie przeoczyłem.
Chociaż to nie jest nieważny lub błąd mieć return
a następnie break
w tym samym case
, to po prostu całkowicie bezcelowe, ponieważ break
nic nie robi. Jest to bezcelowy kod, który musi być widoczny, utrzymywany i zorientowany, ponieważ nie jest logiczny.
Jeśli wyraźny jest celem rdzeń i posiadające break
po return
urks ty, bo to bez sensu, to powiedziałbym, że byłoby lepiej, aby ustawić zmienną i break
, a następnie powrócić zmiennej po zerwaniu z przełącznika.
Jak @RageZ odpowiedź https://stackoverflow.com/a/1437476/2632129
3)Ustaw zmienną i powrót po Instrukcja switch jest zakończona
Nie ma nic złego z tym podejściem w ogóle, ale jeśli nie ma powód do przechowywania wartości w zmiennej (później użycie itp.), to dobrze jest powrócić natychmiast, gdy nie ma potrzeby, aby się kręcić, aby zrobić cokolwiek innego.
To pokazuje wyraźne zamiary - zwróć wartość natychmiast po dopasowaniu sprawy.
Proponuję, aby pytanie @kategorii było osobnym pytaniem, ponieważ nie ma to związku. –
Może codesniffer jest po prostu niepoprawny i nie sprawdza 'return', ale tylko dla' break'. – Gumbo