c ++ Предупреждение: Clang-Tidy: повторяющаяся ветвь в условной цепочке - PullRequest
0 голосов
/ 29 февраля 2020

Можете ли вы помочь мне, как избежать предупреждения в этом коде ...

Предупреждение: 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;
    }

Предупреждение от CLion IDE

1 Ответ

1 голос
/ 29 февраля 2020

Предупреждение касается того факта, что вы делаете то же самое в своих if и else 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?
}

Я полагаю, вы можете переписать его как один состояние, но становится немного страшно:

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