-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.P
OSTED!not-for-mail
From: Piotr Wyderski <p...@n...mil>
Newsgroups: pl.misc.elektronika
Subject: Re: programowanie w C - bardzo ogólne pytanie o filozofię. Arduino w roli
programatora pralki
Date: Tue, 24 Oct 2017 14:27:34 +0200
Organization: ATMAN - ATM S.A.
Lines: 65
Message-ID: <osnbjm$ml6$1@node1.news.atman.pl>
References: <osllnb$psp$1@dont-email.me> <59eeec44$0$653$65785112@news.neostrada.pl>
<osmsrd$mk1$1$PiotrGalka@news.chmurka.net>
<osn8vc$k4r$1@node1.news.atman.pl>
<osnadd$rjo$1$PiotrGalka@news.chmurka.net>
NNTP-Posting-Host: 2a00:f41:3835:dafa:58a2:ca40:ab1a:d2b8
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-2; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: node1.news.atman.pl 1508848054 23206 2a00:f41:3835:dafa:58a2:ca40:ab1a:d2b8
(24 Oct 2017 12:27:34 GMT)
X-Complaints-To: u...@a...pl
NNTP-Posting-Date: Tue, 24 Oct 2017 12:27:34 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101
Thunderbird/45.8.0
In-Reply-To: <osnadd$rjo$1$PiotrGalka@news.chmurka.net>
Xref: news-archive.icm.edu.pl pl.misc.elektronika:725261
[ ukryj nagłówki ]Piotr Gałka wrote:
> Taka konstrukcja z cofaniem się w kodzie jest dla mnie trudna.
No to jej nie używaj, to nie jest ani przymusowe, ani nawet częste.
Ja się tylko sprzeciwiam wieszaniu psów na tym niezwykle użytecznym
narzędziu. Kolega ujął to w charakterystyczny dla siebie sposób:
"jak się umie, to można nawet pić aceton".
> Nie rozumiem czy zakładasz, że albo_jednak_zle może być true po
> wykonaniu bloku dobrze, czy else.
To jest szkic pewnego ogólnego sposobu programowania: ścieżka
najbardziej prawdopodobna powinna być fizycznie najprostsza,
liniowa, bo to podnosi czytelność programu. Nawet kosztem ścieżek
obsługi błędów.
> Jak po else to znaczyło by, że kod //bardzo zle nie gwarantuje, że
> albo_jednak_zle będzie false - czyli może się zapętlić.
Potencjalnie tak, milczące założenie to niekontynuowalność
ścieżki błędnej: rzucenie wyjątku, ustawienie errno, return,
jak kto ma w coding standard ustalone.
> A jak po dobrze to by znaczyło, że warunek dobrze nie jest 100% pewny.
No bo często nie jest. Stopniowo sobie odsiewasz możliwości na
ścieżce głównej. Jeśli warunek jest fałszywy, to stan na 100% nie
jest poprawny, jeśli jest prawdziwy, to *być może* jest poprawny.
Trochę jak w filtrach Bluma. Goto pozwala Ci niezwielokratniać
ścieżek obsługi błędu (zakładając, że taka unifikacja ma sens
logiczny i rozmawiamy tylko o sprawach organizacji strukturalnej).
> Kiedyś dawno błędy zawsze obsługiwałem tak, że wszystkie funkcje
> zwracały int i każda wyższa reagowała na to, co zwraca niższa jak
> umiała, a jak nie to przekazywała błąd wyżej (czasem nadając mu już
> inny numer). Nigdy nie obsługiwałem błędów danej funkcji w niej samej.
To działa dopóki realizujesz to konsekwentnie. Wystarczy
w jednym miejscu zapomnieć i obsługa błędów zdycha. Druga
sprawa to ta obsługa wyżej, to złożona sprawa. Funkcja
wyższego poziomu często nie ma kontekstu do właściwego
zinterpretowania błędu i popadamy w drugą skrajność:
użytkownik dostaje w twarz komunikatem, że pod adresem
0x1234 znaleziono wartość 0x5678 i pomimo absolutnej
poprawności przekazanych mu informacji nie ma pojęcia,
co z tym zrobić. Drugi koniec spektrum wyznacza autentyczny
wpis do logu o treści "Coś jebło, aborting". Trzeba znaleźć
złoty środek. :-)
> Możesz mieć rację, ale nie będę używał goto, bo tak (tu tupnięcie
nogą) :)
W tym zakresie wykazuję się pełnym ekumenizmem. :-)
Rób *porządnie*, a nie skupiaj się na narzędziach do osiągnięcia tego celu.
> Od jakiegoś czasu staram się używać try{throw;}catch bo nie trzeba
> myśleć o przekazywaniu wyżej błędów przychodzących z dołu.
Niestety nie Ty jeden. Pilny lot do USA z dokładnie tego
powodu już ćwiczyliśmy, bo się produkcyjny system w środku
nocy zatrzymał i to niestety nie w warzywniaku. :-)
Pozdrawiam, Piotr
Następne wpisy z tego wątku
- 24.10.17 14:36 Piotr Wyderski
- 24.10.17 14:58 J.F.
- 24.10.17 15:05 Piotr Wyderski
- 24.10.17 17:36 Janusz
- 24.10.17 20:31 Piotr Gałka
- 24.10.17 20:53 Janusz
- 24.10.17 22:33 Grzegorz Niemirowski
- 25.10.17 02:28 Mateusz Viste
- 25.10.17 09:51 Piotr Wyderski
- 29.10.17 20:42 slawek
- 29.10.17 20:48 slawek
- 29.10.17 20:56 slawek
- 29.10.17 21:38 slawek
- 29.10.17 21:48 slawek
- 29.10.17 21:50 slawek
Najnowsze wątki z tej grupy
- Głośnik piezoelektryczny
- Mala autonomiczna kamera monitoringu
- czas na emeryturę i EB
- Generowanie sumy kontrolnej z fragmentu pliku bin
- Re: Mala autonomiczna kamera monitoringu
- HDMI
- Re: Mala autonomiczna kamera monitoringu
- Kamera monitoringu z kartą SIM
- Re: Kamera monitoringu z kartą SIM
- Re: Kamera monitoringu z kartą SIM
- skąd my to znamy
- Re: Kamera monitoringu z kartą SIM
- Re: Kamera monitoringu z kartą SIM
- Re: Kamera monitoringu z kartą SIM
- antena gsm
Najnowsze wątki
- 2024-06-27 SAMOCHODY ELEKTRYCZNE: EKOLOGICZNA HIPOKRYZJA CZY EKONOMICZNA GŁUPOTA? | GOSPODARCZE ZERO #21
- 2024-06-27 Głośnik piezoelektryczny
- 2024-06-23 Mala autonomiczna kamera monitoringu
- 2024-06-26 czas na emeryturę i EB
- 2024-06-26 Wyjścia video kart graficznych (NVIDIA)
- 2024-06-27 Warszawa => Key Account Manager <=
- 2024-06-27 Bażanowice => Expert Migration Architect (Azure) <=
- 2024-06-27 Ulm => IT Netzwerktechniker (m/w/d) <=
- 2024-06-27 Warszawa => Kierownik Działu Spedycji Międzynarodowej <=
- 2024-06-27 Warszawa => Head of International Freight Forwarding Department <=
- 2024-06-26 Kraków => International freight forwarder <=
- 2024-06-26 Częstochowa => Marketing Specialist (E-Commerce) <=
- 2024-06-26 Warszawa => Fullstack Java Developer <=
- 2024-06-26 Warszawa => React Native Developer <=
- 2024-06-26 Rzeszów => Frontend Developer (React) <=