c++ 警告:Clang-Tidy:条件链中的重复分支

mat*_*twg 2 c++ c++14 clion

你能帮我如何避免这段代码中的警告...

警告:Clang-Tidy:条件链中的重复分支

HubInterface *getFreeHub() {
        HubInterface *freeHub = nullptr;
        while (freeHub == nullptr) {
            for (auto hub : this->getHubList()) {
                if (freeHub == nullptr) {
                    freeHub = hub;
                } else if (hub->getStatus() == STATUS_READY &&
                           hub->getBusyNodes().size() < freeHub->getBusyNodes().size()) {
                    freeHub = hub;
                }
            }
            sleep(5);
        }
        return freeHub;
    }
Run Code Online (Sandbox Code Playgroud)

CLion IDE 提供的警告

r3m*_*n0x 5

警告是关于你在你的ifelse if分支中做同样的事情的事实,这是freeHub = hub;

if (freeHub == nullptr) {
    freeHub = hub;
} else if (hub->getStatus() == STATUS_READY &&
           hub->getBusyNodes().size() < freeHub->getBusyNodes().size()) {
    freeHub = hub; // same as above, what is the point?
}
Run Code Online (Sandbox Code Playgroud)

我想您可以将其重写为单个条件,但它变得有点可怕:

if (freeHub == nullptr ||
    (hub->getStatus() == STATUS_READY &&
     hub->getBusyNodes().size() < freeHub->getBusyNodes().size())) {
    freeHub = hub;
}
Run Code Online (Sandbox Code Playgroud)