是否有赞成或以某种方式进行简单验证?什么是最佳做法?你什么时候用一个而不是另一个?
第一种方法:
if ( <validate> ){
submitForm();
} else {
alert('Error');
exitFn();
}
第二种方法:
if ( !<validate> ){
alert('Error!');
exitFn();
}
submitForm();
答案 0 :(得分:1)
如果你想在未经验证的情况下退出该功能,那么它将被优化
if ( !<validate> ){
alert('Error!');
return;
}
submitForm();
答案 1 :(得分:1)
第二种方法称为守卫。它对于在函数顶部划分条件检查和错误处理的清晰块非常有用。
这是一种常见的模式,可以让人们在阅读代码时识别出来。
如果保护检查失败,保护检查就会离开,否则这两个代码块就不相同了。
示例:
function a(b, c) {
if (b.length == 0) {
alert("can't proceed, first argument is empty");
return;
}
if (c.length == 0) {
alert("can't proceed, second argument is empty");
return;
}
doFancyStuff();
}
如果您要以第一种形式执行此操作,它将如下所示。
function a(b, c) {
if (b.length == 0) {
alert("can't proceed, first argument is empty");
} else if (c.length == 0) {
alert("can't proceed, second argument is empty");
} else {
doFancyStuff();
}
}
答案 2 :(得分:1)
你实际上问了两个不同的问题:
在if-then-else结构中,一般情况下我应该首先处理错误条件,然后再处理正常流量,反之亦然?
如果我首先处理错误情况,我应该在处理后返回,还是将正常流逻辑放在else
块中?
这些都是个人品味的问题。话虽如此,关于第一点,我认为你会发现许多程序员会先把错误处理。在第二点,意见分歧。关于此主题的Here is a question。
顺便说一句,我不知道你的意思或打算exitFn()
。 JS中没有这样的功能。
我个人的偏好,就是这样,将是:
if ( !<validate> ) {
alert('Error!');
return;
}
submitForm();
这里的优势在于错误处理通常更短,最好尽快将其排除在外,而不是强迫某人阅读您的代码,以查看如何(或者if)错误正在处理中;另外,将正常流量放在if
内会增加额外的缩进水平。
答案 3 :(得分:0)
一般来说,这取决于具体情况 - 如果&#39;依赖&#39;它可能是有用的。如果你只是处理一个字符串,它本身就可以了,但最好通过捕获两个结果来处理更多的布尔函数。任何情况下你都有其他的&#39;或者其他如果&#39; (对于多个条件)意味着您可以更可靠地过滤,而不是仅仅拒绝输入
我不确定我对第二个例子感到满意,但这可能只取决于我对条件陈述的条件。
它确实打击了我的意见,而不是严格的正确/错误。