测试indexOf返回值的最佳实践

Jus*_*ong 8 javascript java

在测试indexOf的返回值时,您通常会写什么?

if str.indexOf("a") < 0 
Run Code Online (Sandbox Code Playgroud)

VS

if str.indexOf("a") == -1
Run Code Online (Sandbox Code Playgroud)

一种方法比另一种方法更受欢迎吗?

我实际上是为任何语言中的任何函数提出这个问题,错误时返回-1.

我通常更喜欢<0方法,因为如果函数扩展为在某些其他情况下返回-2,代码仍然可以工作.

但是,我注意到== -1方法更常用.有原因吗?

Aln*_*tak 4

我尝试实施“错误条件”测试应尽可能广泛的一般原则。因此我会使用< 0而不是== -1.

这是我在计算机科学学位期间以正式方法在课堂上学到的原则。

简单来说if,这并不重要,但在循环中,重要的是检测任何“超出范围”的条件以确保循环终止,并且不要假设将准确命中循环终止值。

以此为例:

i = 0;
while (i < 10) {
    ++i;
    // something else increments i
}
Run Code Online (Sandbox Code Playgroud)

i = 0;
while (i != 10) {
    ++i;
    // something else increments i
}
Run Code Online (Sandbox Code Playgroud)

后一种情况可能会失败 - 前一种情况不会。