Gdzie jest najlepsze miejsce do sprawdzania poprawności parametrów wejściowych funkcji: w funkcji wywołującej lub w samej funkcji?
Chciałbym ulepszyć swój styl kodowania, dlatego staram się znaleźć najlepsze praktyki lub reguły dotyczące tego problemu. Kiedy i co jest lepsze.
W moich poprzednich projektach sprawdzaliśmy i traktowaliśmy każdy parametr wejściowy wewnątrz funkcji (na przykład, jeśli nie jest on zerowy). Teraz przeczytałem tutaj w niektórych odpowiedziach, a także w książce Pragmatic Programmer, że sprawdzenie poprawności parametru wejściowego jest obowiązkiem osoby dzwoniącej.
Oznacza to, że powinienem sprawdzić parametry wejściowe przed wywołaniem funkcji. Wszędzie wywoływana jest funkcja. I to rodzi jedno pytanie: czy nie powoduje to powielania warunku sprawdzania wszędzie, gdzie wywoływana jest funkcja?
Nie interesują mnie tylko warunki zerowe, ale sprawdzanie poprawności dowolnych zmiennych wejściowych (ujemna wartość do sqrt
funkcji, dzielenie przez zero, niewłaściwa kombinacja stanu i kodu pocztowego lub cokolwiek innego)
Czy istnieją jakieś zasady, jak zdecydować, gdzie sprawdzić warunek wejściowy?
Myślę o kilku argumentach:
- gdy traktowanie nieprawidłowej zmiennej może się różnić, dobrze jest sprawdzić ją po stronie wywołującej (np.
sqrt()
funkcja - w niektórych przypadkach mogę chcieć pracować ze złożoną liczbą, więc traktuję ten stan w wywołującym) - gdy warunek sprawdzania jest taki sam u każdego dzwoniącego, lepiej sprawdzić go w funkcji, aby uniknąć powielania
- sprawdzanie poprawności parametru wejściowego w programie wywołującym odbywa się tylko jeden przed wywołaniem wielu funkcji z tym parametrem Dlatego sprawdzanie poprawności parametru w każdej funkcji nie jest skuteczne
- właściwe rozwiązanie zależy od konkretnego przypadku
Mam nadzieję, że to pytanie nie jest duplikatem żadnego innego, szukałem tego problemu i znalazłem podobne pytania, ale nie wspominają dokładnie o tym przypadku.