2017-09-26 6 views
0

많은 코드를 보았습니다. 한 가지 더 돋보이는 것은 전달 된 매개 변수의 유효성을 검사하는 것입니다. 예 :전달 된 매개 변수 또는 변수의 유효성을 보장하는 더 좋은 방법

1) 파라미터에 전달 string 실제로 유효한 string

+ (BOOL)isEmptyString:(NSString *) string { 
     if (!string || ![string isKindOfClass:[NSString class]]) return YES; 
     NSString *_string = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
     return (!_string.length || [_string isEqualToString:@"null"]); 
} 

2 경우) 또는 파라미터가 진정 경우 dictionary

이 많은 여러 곳에서 유효성 검사에 이르게

코드에서. 그것을 막는 가장 좋은 방법은 무엇입니까? 동시에 stringdictionary이 합격되었는지 확인하는 것이 실제로 맞습니까?

답변

0

이 작업을 수행하는 올바른 방법이 하나만 있는지 확신하지 못합니다.

내 프로젝트에서 타겟 설정에서 'Threat Warnings as Errors (오류로 경고 발생)'을 활성화하고 -Wall -Weverything -Wno-objc-missing-property-synthesis -Wno-gnu -Wno-c++98-compat -Wno-assign-enum 경고 플래그를 설정합니다.

이 '편집증'모드는 개발자가 잘못된 유형의 데이터를 메소드에 전달하는 것을 허용하지 않습니다.

두 번째 것은 어설트입니다. 그래서 귀하의 경우에는 내가 이런 짓을 할 것이다 :

내가 뭔가 잘못 것을 볼 수 있습니다 개발하는 동안 따라서
+ (BOOL)isEmptyString:(NSString *) string { 
    NSParameterAssert([string isKindOfClass:[NSString class]]; 
    ... 
} 

.

그리고 마지막. 릴리스 빌드 메서드에서 잘못된 데이터 형식을 가져올 수 있다고 생각되면 여전히 확인해야합니다.

if (![string isKindOfClass:[NSString class]]) { 
    //Log an error 
    //Decide what do in this case. (Send log, Show error message to user, throw exception ... 
} 
관련 문제