(예 지정 초기화)에서 오브젝티브 C 인스턴스의 일반적인 초기화 시퀀스 등 간다 :자아 테스트는 여전히 필요하고 의미가 있습니까?
- (id)initWithFrame: (NSRect)frame {
self = [super initWithFrame: frame];
if (self != nil) {
// Do your stuff.
}
return self;
}
이것은 잘 알려진 패턴이지만, 자기가 할당 된 경우 테스트 정말 필요한가? 내 말은, 어떤 것이 super 메소드에서 실패한다면, 단순히 nil을 리턴하는 것보다 예외를 발생시키지 않을 것인가? 그것은 안전한 패턴입니까? super 호출에 문제가 있지만 여전히 (임의의) 포인터를 반환하면 어떻게 될까요?
확실히 방어 프로그래밍의 문제이지만 실제로 아무런 결과도 없다는 것을 알고있는 경우 많은 테스트를 수행하는 것이 과장된 것입니다. 물론, 자체을 확인하는 것이 합리적 일 수 있습니다 (문서화해야 함).
'nil'을 반환하면 여전히'init' 메소드가 아닌 예외가 발생합니다. – nhgrif
예. 설립 된 국제 대회를 따르십시오. – uchuugaka
'super '에 대한 호출에 문제가 있고'nil' 또는 유효한 포인터 대신에 가비지를 반환하면 그 코드에 심각한 버그가 있으며 개발자는 속여 야합니다. – rmaddy