eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingJava i gotoRe: Java i goto
  • Data: 2012-06-25 19:28:21
    Temat: Re: Java i goto
    Od: A.L. <l...@a...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On Mon, 25 Jun 2012 17:12:02 +0000 (UTC), Edek Pienkowski
    <e...@g...com> wrote:

    >"goto" w Javie jest słowem kluczowym, nieużywanym. Podobnie jak const.
    >Bytekod JVM natomiast, co właśnie sprawdziłem, ma instrukcję goto,
    >co biorąc pod uwagę to, że bytekod ma tylko trochę ponad 100 opcodes
    >oznacza, że było potrzebne. Czyli z punktu widzenia implementacji
    >nie byłoby problemu żadnego, gdyby Java miała goto.
    >
    >I teraz tak: ja wiem, że "goto" jest Złe i w ogóle, ale jakoś
    >natknąłem się na coś co w Javie nieczęsto się tworzy, mianowicie
    >dość skomplikowany algorytm, gdzie przydało by się goto. W mega
    >uproszczonej wersji wygląda tak:
    >
    >for () {
    > boolean someFlag
    > for() {
    > if (findSth()) {
    > found = sth;
    > someFlag = true;
    > break;
    > }
    > }
    >
    > // można w tym uproszczonym przykładzie
    > // pominąć if robiąc powyżej break outer_loop
    > // ale to mega uproszczony przykład
    > if (someFlag) {
    > break;
    > }
    >}
    >if (!someFlag) {
    > throw new Failure();
    >}
    >
    >Wolałbym tak:
    >
    >for()
    > for() {
    > if (findSth()) {
    > found = sth;
    > goto search_complete;
    > }
    > }
    >}
    >throw new Failure();
    >search_complete:
    >
    >Mi ten drugi kod wygląda na prostszy i dużo bardziej zrozumiały,
    >a prawdziwy kod jest dużo gorszy, bo niepodzielny na metody i
    >długi na kilkaset linijek i szczerze mówiąc ten przykład nie oddaje
    >problemu, prawdziwy ma tych someFlagów ze dwadzieścia, pętle
    >bardziej skomplikowane itd.
    >
    >Dlaczego Java nie ma goto, czy dlatego żeby raczkujące berbecie
    >się nie pocięły?
    >
    >Edek


    Dlaczego nie ma goto?... Bog tak chcial...

    A co o takim rozwiazaniu?...


    search_complete:
    { // begin of search_complete block
    for()
    for() {
    if (findSth()) {
    found = sth;
    break search_complete;
    }
    }
    }
    throw new Failure();
    } // end of search_complete block

    A.L.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: