Byłbym tak defensywny, jak trzeba. Trochę dwuznacznie, tak sądzę, ale postaram się wyjaśnić.
Kiedy poprawisz metodę, jeśli metoda ta ma parametry wejściowe, musisz podjąć decyzję, czego oczekujesz. W sytuacjach i miejscach w aplikacji będzie się to różnić. Na przykład, jeśli metoda lub fragment kodu akceptuje dane z danych wprowadzonych przez użytkownika, to chciałbyś objąć całą bazę kodu i odpowiednio obsłużyć wszelkie dane wejściowe, czy to za pomocą komunikatu o błędzie, czy też jakiegoś przyjemnego sposobu wyświetlania niedopuszczalnych danych.
Jeśli metoda jest jawnym interfejsem API, to samo. Nie możesz kontrolować tego, co nadchodzi, więc powinieneś spodziewać się, że spróbujesz objąć wszystkie aspekty i program odpowiednio.
W przypadku metod, które są wytwarzane w silniku rdzenia twojego projektu, musisz podjąć decyzję. Czy zakładam, że przybywające dane zostały wstępnie sprawdzone i sprawdzone przed ich dostarczeniem, czy powinienem przeprowadzić niezbędne kontrole. Myślę, że zależy to od poziomu koncepcyjnego metody i tego, czy jest to dopuszczalne miejsce do sprawdzenia. Mogę więc rozważyć:
1) Czy to jedyne miejsce, w którym muszę to sprawdzić? Czy ta zmienna będzie musiała zostać sprawdzona w wielu różnych miejscach dla tego warunku? Jeśli tak, mogę wykonać kontrolę raz wyżej, a następnie przyjąć ważność później
2) Czy inne komponenty systemu powinny działać z metodami i interfejsami, które piszę? Jeśli tak, czy można kontrolować za pomocą instrukcji potwierdzenia debugowania, wyjątków debugowania, komentowania metod i ogólnej architektury systemu wymaganego wyniku, czy dane będą wymagały sprawdzenia.
3) Jakie są skutki awarii w tym punkcie kodu. Czy spowoduje to upadek całej sprawy? Czy jakikolwiek błąd zostanie złapany gdzie indziej i ten błąd przynajmniej zostanie złapany.
4) Czy warto tutaj wystawiać czek? Czasami sprawdzenie fragmentu możliwych uszkodzonych danych, chociaż pomaga w rozwiązaniu problemu w tym momencie, a nie pomyłce, może pomóc to ukryć. W tym momencie możesz spędzać godziny, goniąc za innym problemem, tylko po to, aby znaleźć faktyczny problem z powodu prawidłowej kontroli danych, które z powrotem spadły z łańcucha zdarzeń, które spadły kaskadowo do tego, który zgłosił użytkownik / programista.
Ogólnie jestem programistą obronnym, ale wierzę również, że dzięki dokładnemu TDD i odpowiednim testom jednostkowym możesz wprowadzić kontrole w kodzie na wymaganych poziomach i mieć pewność, że działa tak, jak powinien, gdy dojdzie do sekcji niższych poziomów .