eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaprogramowanie w C - bardzo ogólne pytanie o filozofię. Arduino w roli programatora pralkiRe: programowanie w C - bardzo ogólne pytanie o filozofię. Arduino w roli programatora pralki
  • 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

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: