2016-08-12 14 views
0

私はvalidatePasswordの機能を持っており、私たちのプロジェクトに固有のバリデーションを行っています。これをもっと簡潔にするためにどのようにリファクタリングするのですか?

現在のところ、それはこのように、オブジェクトを返します:私は持っていない場合は、

const passwordValidation = validatePassword(value) 

if (passwordValidation.valid === false) { 
    modifiedValidation.password.message = passwordValidation.errors 
    modifiedValidation.password.uiState = 'error' 
    formIsValid = false 
} 

がこれを行うには良い方法があります:

{ 
    valid: boolean, 
    errors: array 
} 

ので、実際の使用がどのように見えます関数の結果としてオブジェクトをインスタンス化し、それを使ってオブジェクトを実行しますか?

のような例:何か:

if (validatePassword(value).validity === true) 

しかし、私はvalidatePassword(value)のプロパティにアクセスするには、関数毎回を再実行する必要がありますする必要はありません...

答えて

0

私はあなたのコードではなくポイントに見えると思いますあなたが正確にそれをしているならば、そのままです。しかし、非常に似たような方法でいくつかのアイテムを検証している場合は、その部分をリファクタリングして、自分自身を繰り返す必要はありません。

function validate(validationResult, target) { 
    if(validationResult.valid === false) { 
     target.message = validationResult.errors; 
     target.uiState = 'error'; 
    } 
    return validationResult.valid !== false; 
} 

var formIsValid = [ 
    validate(validatePassword(value), modifiedValidation.password), 
    validate(validateOtherField(otherValue), modifiedValidation.other) 
].every(function(x) { return x; }); 
関連する問題