下面的函数必须先验证必需的对象字段,然后再继续操作。没有严格要求返回通用验证错误消息与特定错误消息。遵循的最佳做法是什么?
返回通用验证消息,
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
}
我会说他们都不是最好的。因为该函数应该返回帐户详细信息而不是错误。
一个好习惯是使用try/catch
块将错误抛出并捕获到另一侧。
if(!userId || !accountId || !email) {
throw Error("userId or accountId or email is required")
}
在这两种方法之间...做最适合您或您认为最适合的方法,没有任何建议。
我认为最好是具体的。在第二种方法中,您将一无所获。这是一个解决方案:
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}))