eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika[Zlecę] wykonanie interface'u Ethernetowego do architektury Z80Re: [OT] [Zlecę] wykonanie interface'u Ethernetowego do architektury Z80
  • Data: 2012-05-03 15:32:06
    Temat: Re: [OT] [Zlecę] wykonanie interface'u Ethernetowego do architektury Z80
    Od: mk <reverse_lp.pw@myzskm> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    W dniu 2012-05-02 14:52, Andrzej Ekiert pisze:

    >> Destruktory to cecha która nie wymaga podejścia obiektowego do
    >> programowania. Najprościej:
    >>
    >> struct CriticalSection {
    >> CriticalSection{ cli(); }
    >> ~CriticalSection{ sei(); }
    >> };
    >
    > Sprytne i fajnie pokazuje, jak działa destruktor. Ale ja bym po prostu
    > napisał:
    >
    > cli();
    > .... kod krytyczny
    > sei();
    >
    > Lepiej widać w jednym miejscu co się dzieje, bez szukania definicji
    > klasy CriticalSection,

    Tak argumentując to można powiedzieć, że bez szukania definicji cli i
    sei też słabo widać co się dzieje (w szczególności: nie widać tu czy
    jest jakiś związek między funkcjami cli i sei).

    > bez zastanawiania się gdzie jej obiekt wychodzi z
    > zasięgu, no i bez ryzyka, że osoba, która nie jest autorem kodu nie
    > zauważy, że wsród paru zmiennych lokalnych jest jakiś dziwny pozornie
    > nieużywany obiekt.

    Jeśli użytkownik (programista) tak stwierdzi, to jest to wynik braku
    znajomości języka czy braku znajomości projektu w którym przyszło mu
    pracować.
    Opisany mechanizm jest jasny i prosty -- nie przekonuje mnie tutaj
    argumentacja, że mamy do czynienia z jakąś ezoteryką (włączając w to
    debugowanie). Ostatecznie można opatrzyć kod odpowiednimi komentarzami.

    >> Odwrotnie: dzieki swojemu samoczynnemu dzialaniu *ochraniają* przed
    >> wieloma subtelnymi bugami w stylu "a mi się tu zapomniało zdjąć flagę
    >> przerwania".
    >
    > Ja tam wolę widzieć przebieg programu, a nie musieć ciągle pamiętać, że
    > między ostatnią instrukcją funkcji, a '}' uruchomi się jeszcze seria
    > niewidzialnych funkcji.

    W C lub w programowaniu C podobnym: IMO jeden diabeł.
    Natomiast jeśli program jest w C++, to dochodzą wyjątki... wtedy dopiero
    jest problem, gdy właśnie trzeba pamiętać, gdzie tu jeszcze wyjątek może
    polecieć i ręcznie wywoływać odpowiednie finalizacje (pamiętając o
    odpowiedniej kolejności i czy daną akcję sprzątania rzeczywiście należy
    przeprowadzić).

    Pisząc w C, czyli nie mając do dyspozycji mechanizmu wyjątków i
    automagicznego wołania destruktorów, obsługa sytuacji nietypowych
    (różnych błędów itp.) jest czasami naprawdę upierdliwa. Wyjątki w C++ to
    IMO jedna z ważniejszych i bardziej użytecznych cech różniących ten
    język od C (tak, ma to swoją cenę).

    pzdr
    mk

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: