함수의 입력 매개 변수를 확인하는 가장 좋은 곳은 어디입니까?
코딩 스타일을 개선하고 싶을 때이 문제에 대한 모범 사례 또는 일부 규칙을 찾으려고 노력합니다. 언제 그리고 무엇이 더 낫습니다.
이전 프로젝트에서는 함수 내부의 모든 입력 매개 변수를 확인하고 처리했습니다 (예 : null이 아닌 경우). 이제 여기에 일부 답변과 Pragmatic Programmer 책에서 입력 매개 변수의 유효성 검사가 호출자의 책임이라는 것을 읽었습니다.
따라서 함수를 호출하기 전에 입력 매개 변수를 확인해야합니다. 어디서나 함수가 호출됩니다. 그리고 그것은 하나의 질문을 제기합니다 : 함수가 호출되는 모든 곳에서 조건을 확인하는 중복을 생성하지 않습니까?
나는 null 조건에 관심이 없지만 모든 입력 변수 (음수 값을 sqrt
함수로 나누거나 0으로 나누기, 상태와 우편 번호의 잘못된 조합 또는 다른 것)의 유효성 검사에 관심이 있습니다.
입력 조건을 확인할 위치를 결정하는 몇 가지 규칙이 있습니까?
나는 몇 가지 주장에 대해 생각하고 있습니다.
- 유효하지 않은 변수의 처리가 다를 수있는 경우 호출자 측에서 변수를 확인하는 것이 좋습니다 (예 :
sqrt()
함수-복잡한 숫자로 작업하고 싶을 수 있으므로 호출자의 상태를 처리합니다) - 점검 조건이 모든 호출자에서 동일 할 때 중복을 피하기 위해 함수 내부에서 점검하는 것이 좋습니다.
- 호출자에서 입력 매개 변수의 유효성 검증은이 매개 변수로 많은 함수를 호출하기 전에 한 번만 발생합니다. 따라서 각 함수의 매개 변수 유효성 검사는 효과적이지 않습니다.
- 올바른 솔루션은 특정 사례에 따라 다릅니다.
이 질문이 다른 질문과 중복되지 않기를 바랍니다.이 문제를 검색했는데 비슷한 질문이 있지만 정확히이 사례는 언급하지 않았습니다.