优化这段代码 auto Agvs = this->getAgvs(); int agvNumber = Agvs.size(); float count = 0; for (auto &agv : Agvs) { auto agvState = agv->getState(); if (agvState == AgvState::Task) { count = count + 1.00; } if (agvState == AgvState::Offline) { agvNumber = agvNumber - 1; } } if (agvNumber != 0.0) { double num = count / agvNumber; double agvIdle = (1.00 - num) * 100; QString agvIdleRate = QString::number(agvIdle, 'f', 2) + "%"; return agvIdleRate; } else { return 0; }
时间: 2024-03-29 09:34:56 浏览: 55
AGVS.rar_AGVS调度_gulf5j4_scheduling AGV_wpf agv调度系统_调度控制
5星 · 资源好评率100%
优化后的代码如下:
const auto& Agvs = this->getAgvs();
const int agvNumber = Agvs.size();
float count = 0;
for (const auto& agv : Agvs) {
if (agv->getState() == AgvState::Task) {
++count;
} else if (agv->getState() == AgvState::Offline) {
--agvNumber;
}
}
if (agvNumber != 0) {
const double agvIdle = (1.0 - count / agvNumber) * 100.0;
return QString::number(agvIdle, 'f', 2) + "%";
} else {
return "0";
}
优化建议:
1. 使用常量引用代替拷贝,减少不必要的开销。
2. 使用前置自增运算符代替后置自增运算符,可以提高效率。
3. 使用else if代替嵌套if语句,使代码更加简洁。
4. 使用常量代替魔法数,提高代码可读性和可维护性。
5. 将计算空闲率的代码放到if语句中,避免了不必要的计算。
阅读全文