zoukankan      html  css  js  c++  java
  • 避免 if 多层嵌套

    1.把最有可能发生的条件写在前面,把最不可能出现的条件放到最后:

    if(a > 0){
        // code
    }else{
        // code
    }

    2.尽量少使用else:

    可以使用 if + return ,先判断错误条件,然后立马结束函数,防止进入 else 分支。

    if(ok){
        doSomething();
    }else{
        console.log("error!");
        return;
    }
    
    修改为
    
    if(!ok){
         console.log("error!");
        return;
    }
    doSomething();

    3.多重 if 嵌套判断:

    let ok = doSomething();
    if(ok)
    {
        ok = doSomething2();
        if(ok)
        {
            ok = doSomething3();
            if(!ok)
            {
                console.log("error!");
                return;
            }
        }
    }
    
    修改为
    
    let ok = doSomething();
    if(!ok)
    {
        console.log("error!");
        return;
    }
    
    ok = doSomething2();
    if(!ok)
    {
        console.log("error2!");
        return;
    }
    
    ok = doSomething3();
    if(!ok)
    {
        console.log("error3!");
        return;
    }

    4.最后有非条件执行代码的情况:

    A = doSomethingA();
    if(A)
    {
        B = doSomethingB();
        if(B)
        {
            C = doSomethingC();
            if(C)
            {
                console.log("error!");
                return;
            }
        }
    }
    doSomethingD();
    
    修改为:
    
    if(doSomethingA() && doSomethingB() && doSomethingC())
    {
        doSomethingD();
    }

    5.利用条件差传递:

    condition = true;
    
    if(condition) condition = funA();
    
    if(condition) condition = funB();
    
    if(condition) condition = funC();
    
    funD();

    6.多条件判断,可写成 hash 表:

    if(key == "apple")
    {
        val = 1;
    }else if(key == "orange")
    {
        val = 2;
    }else if(key == "banana")
    {
        val = 3;
    }

    修改为

    let obj = {"apple":1,"orange":2,"banana":3};
    let val = obj[key];

    7. switch / case

    switch和if else在性能上是没有什么区别的,主要还是根据需求进行分析和选择。

    • 如果条件较小的话选用if else比较合适。

    • 相反,条件数量较大的话,就建议选用switch。

    一般来说,if else适用于两个离散的值或者不同的值域。如果判断多个离散值,使用switch更加合适。

    在大多数的情况下switch比if else运行的更加快。

    在大多数情况下,switch的性能不会比if else低。switch的确在实质上跟if else if 完全一样的效果,不过在很多情况下,使用switch要比if else方便不少

    比如经典的值等分支,匹配一些状态常量的时候,比if else结构方便许多,不用反复写xx == yy;
    注意:千万不要忘记在每一个case语句后面放一个break语句。也可以放一个return或者throw。

    case语句匹配expression是用 === 而不是 ==

    END...

  • 相关阅读:
    BluetoothGetRadioInfo 函数
    BluetoothFindRadioClose 函数
    BluetoothFindNextRadio 函数
    BluetoothFindFirstRadio 函数
    BLUETOOTH_DEVICE_INFO 函数
    BluetoothSetServiceState 函数
    Bluetooth Functions
    union联合体学习
    置顶
    Toppo: 1
  • 原文地址:https://www.cnblogs.com/sener/p/15668186.html
Copyright © 2011-2022 走看看