eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingJak to robią w NASA › Re: Jak to robią w NASA
  • Data: 2019-08-30 13:09:14
    Temat: Re: Jak to robią w NASA
    Od: Mateusz Viste <m...@w...tell> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On Fri, 30 Aug 2019 12:27:37 +0200, Roman Tyczka wrote:
    > Co prawda nie piszę w C, ale pierwszego i trzeciego warunku też
    > przestrzegam i nikt mi tego nie narzuca, to po prostu pomaga.
    > A metody dłuższe niż kilkadziesiąt linii to zmora.

    W ogólnym i teoretycznym przypadku - zgadzam się.

    W praktyce bywa jednak że trzymanie się takich sztywnych zasad "bo tak"
    sprawia tylko kłopot. Przykład z głowy: funkcja która wykonuje dużą ilość
    sekwencyjnych kroków konfiguracyjnych czegoś tam. Dzielenie jej na siłę
    niekoniecznie jest racjonalne.
    Z goto podobnie: w 95% przypadków goto można z zyskiem zastąpić inną
    konstrukcją, ale zostaje te 5% czasu kiedy GOTO sensownie załatwia temat
    a jakieś wymyślanie pętli/funkcji/czegoś to tylko cudowanie dla sztuki
    niemania goto.


    /* init thermonuclear engine, returns ptr on success, NULL otherwise */
    void *engine_init(void) {
    void *p = NULL;

    p = malloc(ENGINE_MEMSZ);
    if (p == NULL) goto SHITHAPPENS;
    engine_prepare(p);
    engine_thermonuclear_start(p);

    if (rs232_init(COM_BAUDRATE) != 0) goto SHITHAPPENS;
    if (is_it_friday_afternoon() != 0) goto SHITHAPPENS

    return(p);

    SHITHAPPENS: /* smth went south, cleanup and return NULL */
    if (p != NULL) engine_thermonuclear_abort(p);
    free(p);
    rs232_close();

    return(NULL);
    }


    Powyższe można wykonać na kilka sposobów, i nie ma problemu pozbyć się
    goto - tylko po co? Gdyby ktoś z jakichś swoich powodów zakazał mi goto,
    to opakowałbym całość w do { ... } while(0) i zamiast goto korzystał z
    break - ale to tylko dodatkowa gmatwanina, wcale nie czytelniejsza.

    Mateusz

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: