我想优化我的代码以将多个参数控制到一个函数中。
像这个例子:
getEvaluation ( _val1, _val2, _val3, _val4) {
let val_1 = _val1.trim(),
val_2 = _val2.trim(),
val_3 = _val3.trim(),
val_4 = _val4.trim();
let validation = true;
if ( typeof val_1 !== 'string' && val_1 !== null && val_1 !== undefined && val_1.length > 0 ) {
validation = false;
}
if ( typeof val_2 !== 'string' && val_2 !== null && val_2 !== undefined && val_2.length !== 31 ) {
validation = false;
}
if ( typeof val_3 !== 'string' && val_3 instanceof date ) {
validation = false;
}
if ( typeof val_4 !== 'number' && val_4 < 1 && val_4 > 10 ) {
validation = false;
}
return validation;
}
这个例子的最佳实践是什么。
最佳答案
我见过很多 API 以不同的方式处理可选参数,但我通常使用以下规则(可能会有异常(exception)):
如果我必须传递很多参数,我将它们包装在一个对象中,所以
function funcA(a,b,c,d,e,f) {
//a lot of ifs to check each param
}
变成:
function funcA(paramObj) {
if (paramObj.a) { //is "a" populated?
...
}
}
使用这种方法,可选参数没有问题,您不必检查第一个参数是否实际上是第二个参数,因为第一个参数被省略了。此外,如果您更新 API 添加或删除参数,您的代码可以轻松地向后兼容。
但是如果我的函数只接收到少于 4 个参数,我会命令它们将必需的参数放在前面,可选的放在后面:
function myFunc (a, b [,c] [,d]) {...}
顺便说一句,你的代码有一些问题:
- 在检查它们是否为字符串之前调用
trim()
这不是一个好主意 - 我猜你想用 ||而不是在您的支票中使用 &&。
关于javascript - 将多个参数控制为一个函数的最佳代码结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42832356/