WifiCheck 函数优化:提高代码效率和可读性

以下展示了 WifiCheck 函数的优化方法,通过简化判断逻辑和提前返回,提高代码效率和可读性,减少不必要的代码执行。

原始代码:

bool WifiModuleComponent::WifiCheck(const JsonStringCmdSrv::Request &request, JsonStringCmdSrv::Response &response){
    Json::Value data_json;
    JsoncppParseRead::ReadStringToJson(request.json_cmd, data_json);

    if (data_json.isMember('ssid') && data_json['ssid'].isString() && data_json.isMember('pwd') && data_json['pwd'].isString()){
        std::string ssid = data_json['ssid'].asString();
        std::string pwd = data_json['pwd'].asString();

        WiFiState state = GetWifiState();
        if(state == WIFI_STATE_STA){
            char staName[65];
            char staPwd[129];
            ReadStrFromFile(std::string(STA_NAME),staName,sizeof(staName));
            ReadStrFromFile(std::string(STA_PWD),staPwd,sizeof(staPwd));
            if(staName == ssid && staPwd == pwd){
                LOGD('same..');
                return false;
            }else{
                LOGD('new:%s-%s,old:%s-%s',ssid.c_str(),pwd.c_str(),staName.c_str(),staPwd.c_str());
            }
        }
    }

    return true;
}

优化后的代码:

bool WifiModuleComponent::WifiCheck(const JsonStringCmdSrv::Request &request, JsonStringCmdSrv::Response &response){
    Json::Value data_json;
    JsoncppParseRead::ReadStringToJson(request.json_cmd, data_json);

    if (!data_json.isMember('ssid') || !data_json['ssid'].isString() || !data_json.isMember('pwd') || !data_json['pwd'].isString()){
        return true;
    }

    std::string ssid = data_json['ssid'].asString();
    std::string pwd = data_json['pwd'].asString();

    WiFiState state = GetWifiState();
    if(state != WIFI_STATE_STA){
        return true;
    }

    char staName[65];
    char staPwd[129];
    ReadStrFromFile(std::string(STA_NAME),staName,sizeof(staName));
    ReadStrFromFile(std::string(STA_PWD),staPwd,sizeof(staPwd));
    if(staName == ssid && staPwd == pwd){
        LOGD('same..');
        return false;
    }else{
        LOGD('new:%s-%s,old:%s-%s',ssid.c_str(),pwd.c_str(),staName.c_str(),staPwd.c_str());
    }

    return true;
}

优化说明:

  1. 简化判断逻辑: 原始代码中使用多个 && 连接条件,如果其中一个条件不满足,后面的条件就不会执行。优化后的代码将判断逻辑改为 || 连接,只要其中一个条件不满足,就可以直接返回 true,避免了不必要的代码执行。
  2. 提前返回: 优化后的代码在判断 ssidpwd 不存在或不是字符串时,直接返回 true。同样,在判断当前状态不是 WIFI_STATE_STA 时,也直接返回 true,减少了后续代码的执行。
  3. 提高代码可读性: 优化后的代码逻辑更加清晰,更容易理解。

通过这些优化,WifiCheck 函数的效率得到了提升,代码的可读性也得到了改善。

WifiCheck 函数优化:提高代码效率和可读性

原文地址: http://www.cveoy.top/t/topic/nILA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录