2017-09-26 1 views
0

私は多くのコードを見てきました.1つ目は、渡されたパラメータの妥当性をチェックすることでした。例えば、渡されたパラメータまたは変数の妥当性を保証するためのより良い方法

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

これを実行する正しい方法が1つだけあるかどうかはわかりません。

私のプロジェクトでは、ターゲット設定で「Threat Warnings as Errors」を有効にし、警告フラグを-Wall -Weverything -Wno-objc-missing-property-synthesis -Wno-gnu -Wno-c++98-compat -Wno-assign-enumに設定しました。

この「編集的」モードでは、開発者は間違ったタイプのデータをメソッドに渡すことはできません。

第2のものがアサートです。私は、何かがうまくいかないことがわかります開発中にこのよう

+ (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 ... 
} 
関連する問題