-
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
- DS1813-10 się psuje
- Taki tam szkolny problem...
- LIR2032 a ML2032
- SmartWatch Multimetr bezprzewodowy
- olej psuje?
- Internet w lesie - Starlink
- Opis produktu z Aliexpress
- No proszę, a śmialiście się z hindusów.
- Zewnętrzne napięcie referencyjne LM385 1,2V -> 100mV dla ICL7106, Metex M-3800
- karta parkingowa
- Wl/Wyl (On/Off) bialy/niebieski
- I3C
- Pytanie o transformator do dzwonka
- międzymordzie USB 3.2 jako 2.0
- elektronicy powinni pomysleć o karierze elektryka
Najnowsze wątki
- 2024-11-24 Aby WKOOOORWIĆ ekofaszystów ;-)
- 2024-11-22 OC - podwyżka
- 2024-11-22 wyszedł z domu bez buta
- 2024-11-22 Bieda hud.
- 2024-11-24 DS1813-10 się psuje
- 2024-11-23 Białystok => Inżynier bezpieczeństwa aplikacji <=
- 2024-11-23 Szczecin => QA Engineer <=
- 2024-11-23 Warszawa => SEO Specialist (15-20h tygodniowo) <=
- 2024-11-22 Warszawa => Kierownik Działu Spedycji Międzynarodowej <=
- 2024-11-22 Warszawa => Senior Account Manager <=
- 2024-11-22 Warszawa => Key Account Manager <=
- 2024-11-22 Warszawa => DevOps Specialist <=
- 2024-11-22 Kraków => IT Expert (Network Systems area) <=
- 2024-11-22 Warszawa => Infrastructure Automation Engineer <=
- 2024-11-22 Warszawa => Presales / Inżynier Wsparcia Technicznego IT <=