2013-10-21 4 views
3

선호되는 방법은 무엇입니까? myInteger 시간의 99.99 %가 유효한 값을 가지며이 메서드는 매우 빠르게 호출 될 것이라고 가정합니다.평가가 좋다면

- (BOOL)validDate 
{ 
    NSUInteger myInteger = ...//method to obtain value;  

    return (myInteger != NSNotFound); 
} 

실제로 지점을 수행 할 필요가 없기 때문에 :

-(BOOL)validDate 
{ 
    NSUInteger myInteger = ...//method to obtain value;  
    if (myInteger != NSNotFound) 
     return YES;   
    return NO; 
} 


-(BOOL)validDate 
{ 
    NSUInteger myInteger = ...//method to obtain value;  
    if (myInteger == NSNotFound) 
     return NO;   
    return YES; 
} 
+1

이 질문을 끝내기로 결심했다면 설명해주십시오. – user523234

+0

의견을 기반으로하는 답변이 있다고 생각하기 때문에 투표를 종료합니다. 정답은 그다지 중요하지 않기 때문에 이것은 말도 안됩니다. 차이점은 하나의 기계 명령입니다. 또한, Wain의 대답은 내가 선호하는 것입니다. – JeremyP

+1

이런 종류의 질문은 아마도 http://codereview.stackexchange.com/ –

답변

6

것이 바람직하다. 이 코드를 많이 실행하지 않는 차이가 눈에 보이지 작을 것이다

주 ... 선택은 당신은 내가 함께 가고 싶어 준 두 가지 옵션 중 하나를 엄격 경우

+0

내 편집을 참조하십시오. 감사. – user523234

+2

"이 코드를 많이 실행하지 않으면 차이가 현저하게 작아집니다 ..."코드 실행에 대해 엄격하게 말하면 절대적으로 중요합니다. 그러나 코드 가독성을 고려해 본다면 이는 분명 바람직한 접근 방식입니다. –

+1

@ user523234, 심지어는 급속하게 불리는 경우에도 분기 구문이 현대 프로세서에서 처리되는 방식 때문에 차이가 매우 작습니다. 이유가있을 때까지 성능에 대해 걱정하지 마십시오. 정확성과 가독성에 대한 걱정. – Wain

0

-(BOOL)validDate 
{ 
    NSUInteger myInteger = ...//method to obtain value;  
    if (myInteger == NSNotFound) 
     return NO;   
    return YES; 
} 

가독성을 위해. != NSNotFound 같은 이중 부정을 읽는 것을 좋아하지 않습니다.

1

표준에 관한 한 어느 쪽도 바람직하지 않습니다. 비교는 myInteger 값에 관계없이 발생하므로 두 형식 모두 성능면에서 동일합니다. 내가 바꿀 수있는 유일한 방법은 메서드 자체의 명명입니다. 방법 및 변수의 이름을 지정할 때 Apple 코코아 코딩 지침을 준수하는 것이 좋습니다. 애플의 가이드 라인에 따라 :

속성이 형용사로 표현하면,의 형식은이 경우

- (BOOL)isAdjective; 

- (void)setAdjective:(BOOL)flag; 

, validDate 형용사이기 때문에 (이 오브젝트의 상태를 나타내는) - (BOOL)isValidDate과 같이 메서드 이름 앞에 is을 붙이십시오. Apple's Coding Guidelines for more information을 참조하십시오.

+1

+1 "myInteger의 값에 관계없이 비교가 수행되므로 성능과 관련하여 두 형식이 동일합니다."나머지는 내가 찾고있는 것이 아닙니다. – user523234

관련 문제