条件是否应测试阳性或阴性结果?

Ler*_*erp 11 if-statement conditional-statements

对不起,如果标题含糊不清,我不知道如何说出来.

是否更好地表达一个条件,使得您不想要的结果进入if语句,然后退出该函数,或者我应该测试我想要的结果并使用我的代码跟随该语句.

也许一些例子会有所帮助:

我的意思是测试阴性结果:

if(myObject == null) {
    return;
}

//do whatever with myObject
Run Code Online (Sandbox Code Playgroud)

我的意思是测试阳性结果:

if(myObject != null) {
    //do whatever with myObject
}
Run Code Online (Sandbox Code Playgroud)

对不起,如果有人能说得比我好,请做.

mon*_*gen 7

我个人更喜欢第一种检查对象是否为null然后立即返回的方法.它允许"真实代码"保持不变,线性,并且可以防止许多嵌套的if语句,我发现它们更具可读性.否则,两种方式都是有效的,并且具有相同的结果.选择在您的情况下最适合的情况(可以取决于其他任何情况或if语句).

这是一个很好的例子:

if (object1 == null) {
    return;
}
// do some stuff
if (object2 == null) {
    return;
}
// do some stuff
if (object3 == null) {
    return;
}
Run Code Online (Sandbox Code Playgroud)

反对:

if (object1 != null) {
    // do some stuff
    if (object2 != null) {
        // do some stuff
        if (object3 != null) {
            // do some stuff
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我发现第一个更具可读性.

  • 在这种情况下,速度的提高(如果有的话)可以忽略不计。在我看来,可读性更重要。另外,先编写代码,测试它,然后再优化。优化已经足够快的东西是没有意义的,只会降低代码的可读性。 (2认同)