나는 당신이 필요로하는만큼 방어적일 것입니다. 조금 애매하지만, 나는 추측하지만 설명하려고합니다.
메소드를 올바르게 수행 할 때 해당 메소드에 입력 매개 변수가있는 경우 해당 매개 변수가 무엇인지 예상해야합니다. 응용 프로그램 내의 상황과 장소에서는 상황이 다릅니다. 예를 들어, 메소드 또는 코드가 사용자 입력의 데이터를 승인하는 경우 모든 코드 기반을 다루고 오류 메시지를 통해 또는 허용 할 수없는 데이터를 표시하는 좋은 방법을 통해 모든 입력을 처리하려고합니다.
메소드가 노출 된 API ditto 인 경우 들어오는 내용을 제어 할 수 없으므로 모든 측면과 프로그램을 적절하게 다루려고 노력해야합니다.
프로젝트의 핵심 엔진 내에서 생성 된 방법의 경우 결정을 내립니다. 도착하는 데이터가 도착하기 전에 사전 검사되고 유효성이 검사되었거나 필요한 점검을 수행해야한다고 가정합니까? 나는 이것이 방법의 개념 수준과 이것이 수용 가능한 장소인지에 달려 있다고 생각합니다. 그래서 내가 고려해야 할 것은 다음과 같습니다.
1)이 검사를 수행해야하는 유일한 장소입니까? 이 변수는이 조건에 대해 많은 다른 장소에서 확인해야합니까? 그렇다면 체인을 한 번 더 높이 검사하고 나중에 유효성을 가정 할 수 있습니까?
2) 시스템의 다른 구성 요소는 내가 작성한 방법 및 인터페이스와 함께 작동 할 것으로 예상됩니다. 그렇다면 디버그 어설 션 문, 디버깅 예외, 메서드 주석 및 일반 시스템 아키텍처를 통해 필요한 결과를 제어 할 수 있거나 데이터 검사가 필요합니다.
3) 코드에서이 시점에서 실패의 결과는 무엇입니까? 전체가 고장 날까요? 다른 곳에서 오류가 발생하고 최소한 그 오류가 발생합니다.
4) 여기에 체크를하는 것이 합리적입니까? 때때로 오류가 아닌 해당 지점의 문제를 해결하는 데 도움이되지만 손상된 데이터 일부를 검사하면 오류를 해결하지 못할 수 있습니다. 이 시점에서 실제 문제를 찾기 위해 다른 문제를 추적하는 데 몇 시간을 소비 할 수있는 것은 사용자 / 개발자가보고 한 이벤트에 연결된 이벤트 체인에서 데이터에 대한 유효한 확인 때문이었습니다.
일반적으로 나는 방어적인 프로그래머이지만 철저한 TDD 및 적절한 단위 테스트를 통해 필요한 수준에서 코드에 체크를 넣고 하위 레벨 섹션에 도달하면 작동하는지 확신 할 수 있다고 생각합니다. .