-
Data: 2020-06-09 23:15:48
Temat: Re: Embedded HTTP Server
Od: heby <h...@p...onet.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On 09/06/2020 22:43, Maciej Sobczak wrote:
>> Programowania defensywnego na inpucie.
> Rzucam tezą, że ktoś z dobrą intencją ulepił koncept a cała masa ludzi ten koncept
powiela, już bez zastanowienia o co autorowi chodziło.
> Weź sobie funkcję std::sort. Ma trzy argumenty, trzeci to właśnie callback
komparatora (zwany w kręgach zbliżonych do akademickich "predykatem"). Otwórz sobie
header "algorithm" ze swojego kompilatora i poszukaj tam co robi funkcja std::sort ze
swoim trzecim argumentem (czyli "inputem", jak to nazywasz).
> Sprawdza, czy programista nie podał pustego wskaźnika/funktora/itp.?
Teraz weź dowolny nagłówek z Qt i poszukaj sobie Q_ASSERT. Niezłe
głupki, nie? Kto by traciła na to czas, Paaaanie...
> Tak więc biblioteka HTTP jest właśnie w takim towarzystwie (przynajmniej w tej
konkretnej kwestii...).
No ale to kiepskie towarzystwo. Co by o std:: nie mówić, jakościowo to
jest takie sobie, że nie wspomnę już że ma co najmniej kilka implementacji.
>>> Od kiedy to biblioteki HTTP służą do weryfikacji programów?
>> W każdym inpucie powinna być weryfikacja,
> To nie jest input, tylko część programu. Inputem jest URL z przeglądarki albo dane
z formatki w POST. I *to* należy walidować.
Więc mamy różne pojęcie o inpucie. Jako klient bibliteki widzę to
inaczej, nic nie poradzę.
>> ponieważ *ułatwia* to
>> debugowanie klientowi.
> Debugowanie ułatwia fakt, że gdybyś faktycznie spróbował zrobić taki błąd w tej
bibliotece, zamiast trollować na rympał, to byś zobaczył, że std::function rzuca
wtedy wyjątek, który biblioteka uczciwie wypisuje na podanym strumieniu do logowania
błędów.
Exceptions to nie asercje. Nie służa do tego samego. Narzekanie jest na
asercje a raczej ich brak. Asercje to rodzaj dokumentacji dla klienta.
Przydają się w debugu. Nic nie kosztują w runtime. Gdzie są wady które
powodują że nie warto?
> To programowanie defensywne, podobnie jak paranoja wokół unit testów, to niestety
efekt braku refleksji nad własnym warsztatem.
Paranoja wokół unit testów oznacza po drugiej stronie luzacki kod bez
śladu testowania. Rozsądek nakazuje być gdzieś w środku, specyfikacja
nakazuje czasem mieć prawie 100% pokrycia. Trudno tu doszukiwac się
refleksji, choć często muszę stopować młodych gniewnych którym wszystko
zawsze wychodzi dobrze od razu, tylko troche nie działa. Jednak pisanie
unit testów czasem się przydaje. Jak coś zapraszam do mnie, sam zobaczysz.
>>> Targetem są świadomi inżynierowie, którzy nie oczekują od biblioteki HTTP, że im
zrobi weryfikację poprawności programu...
>> Chyba takich jest relatywnie mało. Sądzepo ilości assertów w poważnych
>> biblitekach.
> No to ile assertów znalazłeś w std::sort na trzecim argumencie?
Trudno nazwać std:: poważną bibliteką pod kątem jakości. Obserwowałem
kiedyś rozwój stlport i muszę przyznać że podejście z gatunku "chyba
dobrze, komituj na produkcję" dało mi dużo do myślenia i zmianę własnego
warsztatu ze zwrotem przeciwnym.
> Ja sprawdziłem w bibliotekach standardowych z trzech różnych kompilatorów.
To sprawdź jeszcze resztę świata. Zacznij od Qt. Spodoba Ci się, tam
pracują sami nadprzyrodzeni hackerzy którzy mają reglamentowane asserty.
Ale i tak można ich tam troszkę znaleźć. Widocznie ktoś stwierdził że
czasem warto pilnować czy coś nie jest nullem, nawet jeśli klient tej
biblioteki jest nadprzyrodzonym superkoderem z kontraktem i +10 do
szczęścia.
Następne wpisy z tego wątku
- 09.06.20 23:32 heby
- 10.06.20 07:50 Tomasz Kaczanowski
- 10.06.20 08:09 heby
- 10.06.20 20:57 Maciej Sobczak
- 10.06.20 21:13 Maciej Sobczak
- 10.06.20 22:35 Maciej Sobczak
- 10.06.20 22:52 heby
- 10.06.20 22:54 heby
- 10.06.20 22:55 heby
- 23.06.20 09:33 Wojciech Muła
- 23.06.20 23:13 Maciej Sobczak
Najnowsze wątki z tej grupy
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
- Press Release - AEiC 2023, Ada-Europe Reliable Softw. Technol.
- Ada-Europe - AEiC 2023 early registration deadline approaching
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2023
- Ile cykli zajmuje mnożenie liczb 64-bitowych?
Najnowsze wątki
- 2024-05-10 Chess
- 2024-05-10 IZERA CD.
- 2024-05-10 Vitruvian Man - parts 7-11a
- 2024-05-10 Gdańsk => AI Specialist <=
- 2024-05-10 Zabrze => Junior HelpDesk <=
- 2024-05-10 Chess
- 2024-05-10 chatGPT prawem się zasłania
- 2024-05-10 Vitruvian Man - parts 1-6
- 2024-05-10 Vitruvian Man - parts 7-11a
- 2024-05-10 Chess
- 2024-05-10 Poznań => Specjalista ds. Sprzedaży <=
- 2024-05-10 Vitruvian Man - parts 7-11a
- 2024-05-10 Vitruvian Man - parts 1-6
- 2024-05-10 Vitruvian Man - parts 1-6
- 2024-05-10 Olsztyn => Sales Specialist <=