Ostatnio staram się zrozumieć, jaka jest właściwa ilość sprawdzania i jakie są właściwe metody.
Mam kilka pytań na ten temat:
Jaki jest właściwy sposób sprawdzania błędów (złe dane wejściowe, złe stany itp.)? Czy lepiej jest jawnie sprawdzać błędy, czy używać funkcji takich jak asercje, które można zoptymalizować z końcowego kodu? Mam wrażenie, że jawnie sprawdzam bałagan w programie z dużą ilością dodatkowego kodu, który i tak nie powinien być wykonywany w większości sytuacji - i nie wspominając o tym, że większość błędów kończy się niepowodzeniem przerwania / wyjścia. Po co zaśmiecać funkcję wyraźnymi kontrolami, aby po prostu przerwać? Szukałem stwierdzeń w porównaniu do jawnego sprawdzania błędów i nie znalazłem niewiele, aby naprawdę wyjaśnić, kiedy to zrobić.
Większość mówi „użyj twierdzeń, aby sprawdzić błędy logiczne, i użyj jawnych kontroli, aby sprawdzić inne błędy”. Wydaje się, że to nie prowadzi nas tak daleko. Czy moglibyśmy powiedzieć, że jest to wykonalne:
Malloc returning null, check explictly
API user inserting odd input for functions, use asserts
Czy to poprawiłoby mnie w sprawdzaniu błędów? Co jeszcze mogę zrobić? Naprawdę chcę poprawić i napisać lepszy, „profesjonalny” kod.
setjmp
/ longjmp
są dostępne w C, więc nie potrzebujesz nowego języka.