2011-01-05 2 views
2

생성자에서 유효해야하는 값에 null 값이 전달되는지 확인해야합니까? 즉, 클래스를 던져서 잘못된 값을 가져 오면 예외를 발생 시키거나 런타임에서 예외를 발생시킬 때까지 무언가를 시도 할 때까지 기다려야합니까?언제 null을 확인하나요?

null 값을 전달하는 것이 오류라고 가정 할 때 생성자에서 처리해야합니다.

+0

가능한 한 빨리 실패해야합니다. – Falmarri

답변

8

this StackOverflow post 및 실패 초기 원칙에 대한 참고 사항을 참조하십시오. null 치를 건네주는 것이 에러 인 경우, constructor 내에서 그것을 확실히 취급 할 필요가 있습니다.

+3

일찍 실패하는 것 외에도, 당신은 자기 일관성이라는 관점에서 생각해야합니다. 오브젝트가 null로부터 구축 된 불일치 한 상태에있는 경우는, 반드시, 그 생성을 허가하지 말아주세요. 객체가 항상 일관된 상태를 유지하는 것은 클래스의 작업입니다. 모든 개체가 항상 일관된 상태로 유지되면 안정적이고 예측 가능한 코드 기반을 확보하는 데 많은 시간이 걸렸습니다. – rfeak

0

null이 나올 때 오류없이 진행할 수없는 경우에는 생성자에서 일찍 잡을 수 있습니다. 어쨌든 무언가를 할 수 있으면 잠시 기다려주십시오.

4

하고 있습니다. null 이외의 인수를 가지고있는 것이 계약의 일부인 경우, 반드시 사용자에게 IllegalArgumentException을 알리거나 선언하십시오.

나는 "최소한의 놀라움"방식을 선택합니다.

+0

'NullPointerException'이 더 적절할 것입니다. assert는 주로 디버깅 목적으로 사용됩니다. –

+2

나는 단지 유효하다고 IllegalArgumentException 생각합니다. – Bnjmn

+0

null은 잘못된 인수이므로 NullPointerException이보다 구체적입니다. –

0

나는 일반적으로 duffymo에 동의하지만, 잠재적으로 null 값을 사용해야하는시기에 따라 달라집니다. 생성자에서 필요하다면, 거기에 IllegalArgumentException을 던져야합니다. 그러나 나중에 (예를 들어 다른 방법에서) 값이 필요하지 않으면 그 시점까지 null 검사를 연기 할 수 있습니다.

0

기본 규칙 : 생성자가 주어진 매개 변수로 안정적이고 유효한 상태를 보장 할 수없는 경우 Exception!

유효한 개체 상태를 갖기 위해! = null 값이 필요하면 즉시 예외를 확인하고 예외를 던집니다. 언제 또 할 수 있니?

관련 문제