eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingJava i gotoRe: Java i goto
  • Path: news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.glorb.com!n
    ews-in-01.newsfeed.easynews.com!easynews!core-easynews-01!easynews.com!en-nntp-
    11.dc1.easynews.com.POSTED!not-for-mail
    From: A.L. <l...@a...com>
    Newsgroups: pl.comp.programming
    Subject: Re: Java i goto
    Message-ID: <b...@4...com>
    References: <jsa652$98b$2@inews.gazeta.pl>
    X-Newsreader: Forte Agent 4.2/32.1118
    MIME-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: 8bit
    Lines: 79
    X-Complaints-To: a...@e...com
    Organization: Forte Inc. http://www.forteinc.com/apn/
    X-Complaints-Info: Please be sure to forward a copy of ALL headers otherwise we will
    be unable to process your complaint properly.
    Date: Mon, 25 Jun 2012 12:28:21 -0500
    X-Received-Bytes: 2739
    Xref: news-archive.icm.edu.pl pl.comp.programming:198086
    [ ukryj 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: