-
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
Następne wpisy z tego wątku
- 19.11.21 10:18 heby
- 19.11.21 10:53 J.F
- 19.11.21 10:59 Mateusz Viste
- 19.11.21 11:07 Mateusz Viste
- 19.11.21 11:34 Mateusz Viste
- 19.11.21 13:37 Astralny Rębajło
- 19.11.21 17:08 heby
- 19.11.21 20:38 Mateusz Viste
- 19.11.21 21:19 heby
- 19.11.21 21:54 Mateusz Viste
- 19.11.21 22:00 Marek
- 19.11.21 22:06 heby
- 19.11.21 22:11 heby
- 19.11.21 22:19 Dawid Rutkowski
- 19.11.21 22:54 Mateusz Viste
Najnowsze wątki z tej grupy
- Thunderbird i dysk...
- opornosc falowa
- Bateria 9V 6F22, alkaliczna v cynkowa, samorozładowanie, bateria wysokiej trwałości do miernika
- Tani zakup z ali?
- w czasach LED komary mają ciężko
- walizka z kodami
- Rejestrator temperatur - termopara, siec
- Router LTE z możliwością zmian MTU
- Fajny film widziałem...
- Jaka ładowarka sieciowa do Iphona?
- Taśma izolacyjna do prac elektrycznych
- Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
Najnowsze wątki
- 2025-07-25 Drastycznie rośnie import stali - w hucie w Dąbrowie Górniczej zostanie wygaszony wielki piec
- 2025-07-25 Drastycznie rośnie import stali - w hucie w Dąbrowie Górniczej zostanie wygaszony wielki piec
- 2025-07-25 I kolejny inżynier...
- 2025-07-25 Kobiety, bójcie się inżynierów...
- 2025-07-25 Warszawa => Konsultant Wiodący SAP PP <=
- 2025-07-25 Re: Brawo !!! Osy chronione w Niemczech. Za usunięcie gniazda grozi mandat
- 2025-07-25 cudzoziemiec bez biletu
- 2025-07-25 Gdynia => Sales Executive / KAM <=
- 2025-07-25 Inżynierzy z prawomocnym...
- 2025-07-25 Łódź => Mainframe (z/OS, Assembler) Developer <=
- 2025-07-25 Warszawa => Inżynier oprogramowania .Net <=
- 2025-07-25 Kraków => Senior Fullstack Engineer (Low-Code Platform) <=
- 2025-07-25 Skrobanie
- 2025-07-25 Lublin => Konsultant ds. Wdrożeń ERP (moduł FK) <=
- 2025-07-25 Warszawa => Senior Frontend Developer (React + React Native) <=