Nie zgodzę się z tym wszystkim, z tobą młodymi biczami.
Korzystanie z powrotu w środku metody, nieważne czy nie, jest bardzo złą praktyką, z przyczyn, które zostały wyraźnie sformułowane, prawie czterdzieści lat temu, przez zmarłego Edsgera W. Dijkstę, zaczynając od dobrze znanego " Oświadczenie GOTO uznane za szkodliwe "i kontynuowanie w" Programowaniu strukturalnym "autorstwa Dahl, Dijkstra i Hoare.
Podstawową zasadą jest, że każda struktura kontrolna i każdy moduł powinny mieć dokładnie jedną pozycję i jedno wyjście. Wyraźny powrót w środku modułu łamie tę zasadę i sprawia, że znacznie trudniej jest zrozumieć stan programu, co z kolei znacznie utrudnia określenie, czy program jest poprawny, czy też nie (co jest znacznie silniejszą własnością niż "czy wydaje się działać, czy nie").
"Oświadczenie GOTO uznane za szkodliwe" i "Programowanie strukturalne" rozpoczęły rewolucję "Structured Programming" w latach siedemdziesiątych.Te dwie części to powody, dla których mamy teraz, jeśli nie, a zarazem i inne konstrukty kontroli jawnej dzisiaj i dlaczego instrukcje GOTO w językach wysokiego poziomu znajdują się na liście zagrożonych gatunków. (Moja osobista opinia jest taka, że muszą znajdować się na liście gatunków wymarłych).
Warto zauważyć, że Modulator Przepływu Wiadomości, pierwszy kawałek oprogramowania militarnego, który PRZEDE WSZYSTKIM przeszedł testy akceptacyjne za pierwszym razem, bez żadnych odchyleń , zrzeczenie się lub "tak, ale" słownictwo, zostało napisane w języku, który nie miał nawet instrukcji GOTO.
Warto również wspomnieć, że Nicklaus Wirth zmienił semantykę instrukcji RETURN w Oberon-07, najnowszej wersji języka programowania Oberon, czyniąc ją końcową częścią deklaracji procedury wpisanej (tj. Funkcji) , a nie wykonywalne polecenie w treści funkcji. Jego wyjaśnienie zmiany mówiło, że zrobił to dokładnie dlatego, że poprzednia forma z 1-wyjściowego interfejsu programowania strukturalnego.
Co na temat: void DoThis() {if (isValid) DoThat(); } – Dscoduc
Wyobraź sobie kod? Czemu? To jest tutaj! :-D – STW
To jest dobre pytanie, zawsze uważam, że dobrą praktyką jest używanie zwrotu; aby opuścić metodę lub funkcję. Zwłaszcza w metodzie wyszukiwania danych LINQ o wielu wynikach IQueryable i wszystkie z nich zależą od siebie nawzajem. Jeśli jeden z nich nie ma wyniku, ostrzeż i wyjdź. –
Cheung