2012-10-10 2 views
10

죄송합니다. 제목이 모호한 경우 단어를 입력하는 방법을 모르겠습니다.양성 결과 또는 음성 결과를 조건 테스트해야합니까?

원하지 않는 결과가 if 문을 입력 한 다음 함수를 종료하는 조건을 사용하는 것이 더 좋습니까? 아니면 원하는 결과를 테스트하고 내 코드로 문을 따라야합니까?

은 어쩌면 몇 가지 예 도움이 될 :

나는 부정적인 결과를 테스트하여 무엇을 의미 :

if(myObject == null) { 
    return; 
} 

//do whatever with myObject 

나는 긍정적 인 결과를 테스트하여 무엇을 의미 :

if(myObject != null) { 
    //do whatever with myObject 
} 

죄송합니다, 만약 사람 제발 나보다 더 잘 할 수있어. 제발.

+0

else가 없으면 두 명령문 모두 다른 의미가 있습니다. else가 있으면 컴파일러가 가장 빠른 비교를 최적화 할만큼 충분할 것으로 기대합니다. – Eduardo

+0

이것은 정말로 좋은 질문이며 확실한 답이 있어야한다고 생각합니다. 개인적으로 긍정적 인 조건은 읽고 이해하는 것이 더 빠르다고 느낍니다. 그러나 나는이 방법이나 다른 것을 확실히 입증하는 연구가있을 것으로 기대했을 것입니다. – Ken

답변

7

저는 개인적으로 개체가 null인지 확인한 후 즉시 반환하는 첫 번째 방법을 선호합니다. 그것은 "실제 코드"가 들여 쓰기를하지 않고 선형으로 유지할 수있게 해주 며, 많은 중첩 된 if 문을 방지 할 수 있습니다. 그렇지 않으면 두 방법 모두 유효하며 동일한 결과를 얻습니다. 상황에 가장 잘 맞는 것을 선택하십시오 (else 또는 if 문에 따라 다를 수 있음).

if (object1 == null) { 
    return; 
} 
// do some stuff 
if (object2 == null) { 
    return; 
} 
// do some stuff 
if (object3 == null) { 
    return; 
} 

반대 :

if (object1 != null) { 
    // do some stuff 
    if (object2 != null) { 
     // do some stuff 
     if (object3 != null) { 
      // do some stuff 
     } 
    } 
} 

내가 첫 번째가 훨씬 더 읽을 수 찾을

여기 좋은 예입니다.

+0

컴파일러의 속도보다 readble이 중요합니까? 그냥 묻는거야? 이것들에 대해서도 새롭다. –

+1

이 경우, 속도 개선이 있다면, 무시할 만하다. 필자의 의견으로는 가독성이 더 중요합니다. 또한 코드를 먼저 작성하고 테스트하고 나중에 최적화하십시오. 이미 충분히 빠르며 코드를 읽기 어렵게 만드는 점을 최적화하지 않습니다. – monoxygen

0

결과 집합이 비어 있거나 변수가 할당되지 않은 로깅과 같은 긍정적 인 조건을 만족할 때 수행 할 수있는 유효한 작업이있는 경우 긍정적 인 조건을 사용하는 것이 좋습니다. 문자열을 테스트 할 때 Apache Commons StringUtils isNotBlank()와 같은 API가 도움이 될 수 있습니다. 그러나 때로는 변수가 아닌 곳에서 처리를 진행하는 것과 같이 부정적인 테스트를 수행하는 것이 가장 깨끗한 경우도 있습니다.

관련 문제