验证对象字段的最佳最佳实践是什么?

问题描述 投票:-1回答:2

下面的函数必须先验证必需的对象字段,然后再继续操作。没有严格要求返回通用验证错误消息与特定错误消息。遵循的最佳做法是什么?

返回通用验证消息,

function getAccountDetails({userId, accountId, email}) {
 if(!userId || !accountId || !email) {
   return 'userId or accountId or email is required';
 }
 // Todo

}

返回特定的验证错误消息,

 function getAccountDetails({userId, accountId, email}) {
  if(!userId) {
    return 'userId is required';
  }
  if(!accountId) {
    return 'accountId is required';
  }
  if(!email) {
    return 'email is required';
  }
  // Todo

}
javascript coding-style
2个回答
1
投票

我会说他们都不是最好的。因为该函数应该返回帐户详细信息而不是错误。

一个好习惯是使用try/catch块将错误抛出并捕获到另一侧。

if(!userId || !accountId || !email) {
   throw Error("userId or accountId or email is required")
 }

在这两种方法之间...做最适合您或您认为最适合的方法,没有任何建议。


0
投票

我认为最好是具体的。在第二种方法中,您将一无所获。这是一个解决方案:

function getAccountDetails({userId, accountId, email}) {
     let message = [];
     if(!userId)
          message.push("user ID");
     if(!accountId)
          message.push("account ID");
     if(!email)
          message.push("email ID");
     if(message.length==1)
          return message[0]+" is required";
     else if(message.length==2)
          return message[0]+" and "+message[1]+" are required"
     else if(message.length>2){
          let last = message.pop();
          return message.join(", ")+" and "+last+" are required";
     }
}
               
console.log(getAccountDetails({userId:null, accountId:"accountId", email:"email"}))
console.log(getAccountDetails({userId:null, accountId:null, email:"email"}))
console.log(getAccountDetails({userId:null, accountId:null, email:null}))
© www.soinside.com 2019 - 2024. All rights reserved.