-
Data: 2017-10-24 14:27:34
Temat: Re: programowanie w C - bardzo ogólne pytanie o filozofię. Arduino w roli programatora pralki
Od: Piotr Wyderski <p...@n...mil> szukaj wiadomości tego autora
[ pokaż wszystkie 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
- Położyłem dwa telefony obok siebie
- Przekaźnik na szynę DIN (?)
- Taśma LED
- Jak odróżnić myjki wibrujące od ultradźwiękowych.
- Ledy na wyłączniku czasowym błyskają
- Re: Kompensacja mocy biernej przy 230VAC
- Re: Kompensacja mocy biernej przy 230VAC
- RCD wybija
- Re: Kompensacja mocy biernej przy 230VAC
- Łożysko ślizgowe - jaki olej
- Re: Kompensacja mocy biernej przy 230VAC
- Re: Kompensacja mocy biernej przy 230VAC
- Współczesny falomierz
- Zasilacz 7V na szynę DIN
- Waga z legalizacją
Najnowsze wątki
- 2025-04-09 Czy blokowanie sali obrad Sejmu przez PO-opozycje pod rządami PiS już się przedawniło? [mecenas Giertych dołki kopie?]
- 2025-04-09 Koniec produkcji Leapmotor T03
- 2025-04-09 Pruszków => Specjalista ds. public relations <=
- 2025-04-09 Rzeszów => International Freight Forwarder <=
- 2025-04-09 Ryga => Konsultant Wdrożeniowy Comarch XL/Optima (Księgowość i Kad
- 2025-04-09 Poznań => Konsultant wdrożeniowy Comarch XL/Optima (Księgowość i
- 2025-04-09 Chrzanów => Spedytor Międzynarodowy (handel ładunkami/prowadzenie f
- 2025-04-09 Warszawa => JavaScript / Node / Fullstack Developer <=
- 2025-04-09 Warszawa => Senior Product Manager <=
- 2025-04-09 Warszawa => Starszy Konsultant SAP FICO <=
- 2025-04-09 Warszawa => NMS System Administrator <=
- 2025-04-07 C++. Podróż Po Języku - komentarz
- 2025-04-08 Warszawa => Presales - Inżynier Wsparcia Technicznego IT <=
- 2025-04-08 Pomnik Polaków w Berlinie - OK! - ale co z ustawą o mniejszości polskiej?
- 2025-04-08 Uniwersytet Jagielloński zawiesza protestujących studentów