Keyword goto w Javie to chyba tylko i wyłącznie zarezerwowany keyword i jakiekolwiek użycie jest niepoprawne. Podobnie zresztą jak słówko const. Natomiast goto można używać chyba bez ograniczeń na poziomie bajtkodu, choć dokładnie już tego nie pamiętam.
Jak pozbyć się continue?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: XML Hills
- Rejestracja: dni
- Ostatnio: dni
for (int i=0; i<x; i++)
for (int j=0; j<y; j++)
for (int k=0; k<z; k++)
{
if (...)
goto koniec;
...
}
koniec:
nie róbcie tego w domu:
try
{
for (int i=0; i<x; i++)
for (int j=0; j<y; j++)
for (int k=0; k<z; k++)
{
if (...)
throw string("koniec");
...
}
}
catch (string){}
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 1454
Zaczynałem naukę C/C++ po asemblerze z jego instrukcjami skoków bezwarunkowego i warunkowych,więc nie czuję żadnych awersji do goto i parcia żeby je zaraz koniecznie zastępować innymi konstrukcjami.
Co do przykładu z życia wziętego kiedy goto się przydało,to miałem kiedyś dość spory kawałek kodu zawierający zagnieżdżone pętle (2x while i 1 for).W pewnym momencie rozszerzono funkcjonalność i kod trzeba było przerobić-polegało to w skrócie na tym,że część operacji przygotowawczych trzeba było powtórzyć,użyć rekurencji itd.Tutaj właśnie dodanie goto pozwoliło mi na zwiększenie tej funkcjonalności w prosty sposób bez rozpierdalania całego bloku pętli.
Btw,jeśli już użyć goto,to polecam tak:
goto label_o_wiele_mówiącej_nazwie;//jump up/down
Najlepiej byłoby zapisać komentarz jako "jump to line X",ale niestety jak kod się zmienia to nie nadążymymy ze zmianami.Krótki komentarz w którym kierunku nastąpi skok mocno ułatwia czytanie kodu.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 2512
A mi natomiast tłuczono od samego początku, że goto się nie używa i żeby pisać kod tak, żeby nie trzeba było. Instrukcję tę spotykałem tylko w plikach batch i muszę powiedzieć, że zawsze czytanie takiego kodu sprawiało mi pewne trudności (oczywiście norma to tak ze 4 instrukcje w krótkim pliku)
- Rejestracja: dni
- Ostatnio: dni
Tak się tłucze do głowy wszystkim początkującym, bo jak się nauczą tego stosować, to potem tworzą programy, które są nazywane "Spaghetti" - nie do rozkminienia, ale kiedy ktoś już wie co robić kiedy się pisze kody, to nie ma problemów w zastosowaniu goto, bo wiadomo, że zrobi to jak najczytelniej. Takie jest moje zdanie.
- Rejestracja: dni
- Ostatnio: dni
a co powiecie na COMEFROM z języka Intercal? ;-) Daje się zaimplementować w Pythonie: http://entrian.com/goto/
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Stacktrace
- Postów: 6823
W temacie: http://xkcd.com/292/
Z GOTO jest ten drobny problem, że 95% przypadków użycia wynika z lenistwa i niechęci do przemyślenia swojego postępowania.