WifiCheck 函数优化:提高代码效率和可读性
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;
}
优化说明:
- 简化判断逻辑: 原始代码中使用多个
&&连接条件,如果其中一个条件不满足,后面的条件就不会执行。优化后的代码将判断逻辑改为||连接,只要其中一个条件不满足,就可以直接返回true,避免了不必要的代码执行。 - 提前返回: 优化后的代码在判断
ssid或pwd不存在或不是字符串时,直接返回true。同样,在判断当前状态不是WIFI_STATE_STA时,也直接返回true,减少了后续代码的执行。 - 提高代码可读性: 优化后的代码逻辑更加清晰,更容易理解。
通过这些优化,WifiCheck 函数的效率得到了提升,代码的可读性也得到了改善。
原文地址: http://www.cveoy.top/t/topic/nILA 著作权归作者所有。请勿转载和采集!