Jak pozbyć się continue?

Jak pozbyć się continue?
Wibowit
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: XML Hills
0

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.

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
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:

Kopiuj
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){}
MasterBLB
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 1454
0

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:

Kopiuj
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.

Sarrus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2512
0

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)

MJ
  • Rejestracja: dni
  • Ostatnio: dni
0

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.

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
0

a co powiecie na COMEFROM z języka Intercal? ;-) Daje się zaimplementować w Pythonie: http://entrian.com/goto/

Koziołek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Stacktrace
  • Postów: 6823
0

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.

MasterBLB
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 1454
0
LetsFight napisał(a)

Nie podpuszczam Was, ale lejta się :-)

Radzę udać się na inne forum-my tutaj (mam na myśli użytkowników z dłuższym stażem) nie najeżdżamy na siebie jeśli mamy odmienne opinie o czymś.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.