나는 당신이 올바른 길을 가고 있다고 생각합니다. 잠재적으로 던져 질 수있는 예외를 모두 던지거나 잡거나 문서화하는 것은 의미가 없습니다. 제품 엄격 성이 높은 수준의 예외 고용 및 문서화를 요구하는 경우가 있습니다 (예 : 시스템의 특정 안전 중요 측면).
계약 개념을 사용하여 특히 다운 스트림 발신자 (예 : 공공 또는 보호 회원과 유사한 것)에 대한 전제 조건 (및 사후 조건)을 식별하는보다 방어적인 전략은 종종보다 효과적이고 유연합니다. 이는 구현뿐만 아니라 문서에도 적용됩니다. 개발자가 예상되는 것을 알면 규칙을 따르는 경향이 있으며 작성한 코드를 혼동하거나 오용 할 가능성이 줄어 듭니다.
문서화해야 할 일반적인 사항 중 일부는 널 매개 변수의 경우입니다. 일반적으로 예상되지 않는 결과로 이끄는 사용 결과가 종종 있지만 여러 가지 이유로 허용되며 때로는 유연성을 위해 사용되기도합니다. Null 또는 기타 특수하고 비이성적 인 값 (음수 시간 또는 음수와 같은)을 허용하는 매개 변수가있는 구성원의 소비자로서 나는 그것들이 식별되고 설명되는 것을 볼 것으로 기대합니다.
null이 아닌 매개 변수의 경우 공용 또는 보호 멤버의 소비자로서 null이 허용되지 않는다는 것을 알고 싶습니다. 주어진 맥락에서 유효한 값의 범위가 무엇인지 알고 싶습니다. 정상 범위를 벗어난 값을 사용하지만 다른 호출 컨텍스트에서 유효한 값을 사용하는 결과를 알고 싶습니다 (예 : 유형의 값은 일반적으로 모든 작업에 유효하지만 여기서는 아닙니다)-부울 매개 변수 유효한 값으로 거짓을 기대하지 마십시오.
플랫폼 또는 잘 알려진 인터페이스에 관해서는 문서화에 극도로 갈 필요가 없다고 생각합니다. 그러나 개발자는 플랫폼 지침에 따라 구현을 다양화할 수있는 기회가 있으므로 지침을 따르는 방법에 유의하십시오.
IDisposable과 관련하여, 종종이 인터페이스의 구현은 명시 적 폐기 프로세스보다 선호되는 대체 방법을 제공합니다. 이 경우 선호하는 방법을 강조 표시하고 명시적인 처리가 바람직하지 않다는 점에 유의하십시오.