eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaAVR po latachRe: AVR po latach
  • Data: 2021-11-19 10:01:37
    Temat: Re: AVR po latach
    Od: Mateusz Viste <m...@x...invalid> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    2021-11-19 o 09:43 +0100, J.F napisał:
    > w przypadku sukcesu tez mozemy chciec zwolnic zasoby, wiec raczej
    >
    > int err_code=0;
    >
    > if (!buf) {err_code=BUF_ALL; goto poleglem;}
    > if (!napisz_na_port() {err_code=PORT_Write; goto poleglem;}
    > if (!odbierz_z_portu() {err_code=PORT_READ; goto poleglem;}
    >
    > err_code=SUCCESS
    >
    > poleglem:
    >
    > if (buf) zwolnij_bufor();
    > if (port) zamknij_port();
    > return(err_code);

    Detale zależą już od założeń konkretnego przypadku - API może
    przewidywać, że po nawiązaniu komunikacji port pozostaje otwarty na
    potrzeby dalszych operacji. Jeśli nie, to oczywiście masz słuszność.

    > Mozna tez
    > int err_code=0;
    >
    > if (!buf) err_code=BUF_ALL;
    > if (!err_code && !napisz_na_port()) err_code=PORT_Write;
    > if (!err_code && !odbierz_z_portu()) err_code=PORT_READ;
    >
    > err_code=SUCCESS
    >
    > if (buf) zwolnij_bufor();
    > if (port) zamknij_port();
    > return(err_code);
    >
    > no i niby poprawniej, tylko program niepotrzebnie sprawdza pare razy
    > blad ... a co tam, szybkie procki mamy

    Można. Tylko po co? Aby zmniejszyć czytelność kodu i dodać
    niepotrzebnych kroków, coby za wszelką cenę uniknąć goto?

    > ewentualnie
    >
    > int err_code=0;
    > if (!buf) err_code=BUF_ALL;
    > else if (!napisz_na_port()) err_code=PORT_Write;
    > else if (!odbierz_z_portu()) err_code=PORT_READ;
    >
    > err_code=SUCCESS
    >
    > if (buf) zwolnij_bufor();
    > if (port) zamknij_port();
    > return(err_code);
    >
    > Superczytelne :-P

    No właśnie, czytelność na tyle słaba, że zapomniałeś o końcowym "else" i
    awaria gotowa. A w efekcie kompilator i tak przetłumaczy to wszystko
    na kilka goto...

    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: