繁体   English   中英

if else验证方法之间的区别

[英]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();
    }
}

您实际上是在问两个独立的问题:

  1. 在if-then-else结构中,通常应该首先处理错误条件,然后再处理正常流,反之亦然吗?

  2. 如果我首先处理错误情况,处理后应该返回还是将常规流逻辑放在else块中?

这两个都是个人品味的问题。 话虽如此,关于第一点,我认为您会发现许多程序员会将错误处理放在首位。 第二点,意见分歧。 这是有关此主题的问题。

顺便说一句,我不知道您对exitFn()意思或打算做什么。 JS中没有这种功能。

我的个人喜好,仅此而已:

if ( !<validate> ) {
  alert('Error!');
  return;
}

submitForm();

这样做的好处是错误处理通常更短,并且最好尽快将其清除,而不是强迫某人阅读您的代码查看十二行或十二行,以查看错误(或是否错误)正在处理中; 同样,将常规流放在if会增加缩进级别。

通常,它取决于上下文-如果仅处理字符串,则单独依靠'if'可能会很有用,但是最好通过捕获两个结果来处理更多布尔函数。 如果您遇到“ else”或“ else if”(针对多个条件),则意味着您的过滤更加可靠,而不仅仅是拒绝输入

我不确定我对第二个示例是否满意,但这可能取决于我对条件语句的条件。

它的确引起了我的见解,而不是严格意义上的对/错。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM