[英]Difference between if else validation methods
以一种或另一种方式进行简单验证是否有利弊? 最佳做法是什么? 您什么时候可以使用另一个?
第一种方法:
if ( <validate> ){
submitForm();
} else {
alert('Error');
exitFn();
}
第二种方法:
if ( !<validate> ){
alert('Error!');
exitFn();
}
submitForm();
如果您想在未通过验证的情况下退出该功能,则会对其进行优化
if ( !<validate> ){
alert('Error!');
return;
}
submitForm();
第二种方法称为警卫。 这对于在函数顶部界定清晰的条件检查和错误处理块很有用。
这是一种常见的模式,其优点是可以让阅读您的代码的人可以识别。
重要的是,如果防护检查失败,则将其退出该功能,否则这两个代码块将不相等。
例:
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();
}
}
您实际上是在问两个独立的问题:
在if-then-else结构中,通常应该首先处理错误条件,然后再处理正常流,反之亦然吗?
如果我首先处理错误情况,处理后应该返回还是将常规流逻辑放在else
块中?
这两个都是个人品味的问题。 话虽如此,关于第一点,我认为您会发现许多程序员会将错误处理放在首位。 第二点,意见分歧。 这是有关此主题的问题。
顺便说一句,我不知道您对exitFn()
意思或打算做什么。 JS中没有这种功能。
我的个人喜好,仅此而已:
if ( !<validate> ) {
alert('Error!');
return;
}
submitForm();
这样做的好处是错误处理通常更短,并且最好尽快将其清除,而不是强迫某人阅读您的代码查看十二行或十二行,以查看错误(或是否错误)正在处理中; 同样,将常规流放在if
会增加缩进级别。
通常,它取决于上下文-如果仅处理字符串,则单独依靠'if'可能会很有用,但是最好通过捕获两个结果来处理更多布尔函数。 如果您遇到“ else”或“ else if”(针对多个条件),则意味着您的过滤更加可靠,而不仅仅是拒绝输入
我不确定我对第二个示例是否满意,但这可能取决于我对条件语句的条件。
它的确引起了我的见解,而不是严格意义上的对/错。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.