Предупреждение Intellij: логический метод foo() всегда инвертируется

#java #intellij-idea

#java #intellij-idea

Вопрос:

У меня есть этот код:

 private boolean changeNcheckIP() {

    //try 3 times before false
    for(int i = 0; i < 3; i  ) {

        if(changeIP() amp;amp; checkIP()) { return true; }

    }

    return false;

}
  

Intellij выдает мне предупреждение в changeNcheckIP() :

Boolean method changeNcheckIP() is always inverted

Как я могу это исправить?

Ответ №1:

Это предупреждение, а не ошибка (вы не обязаны ее исправлять).
IntelliJ просто уведомляет вас, что вы всегда используете свой метод, который changeNcheckIP() возвращает как инвертированный. Это означает, что при вызове метода (пока в вашем коде) вы, вероятно, делаете что-то вроде:

 if(!changeNcheckIP()) {
    //do something...
}
  

Обратите внимание на ! в if, это то, что IntelliJ пытается сказать вам «исправить».
Если бы вы использовали:

 if(changeNcheckIP()) {
    //do something...
}
  

Предупреждение исчезнет (обратите внимание на удаленное «!«), но вам нужно ИНВЕРТИРОВАТЬ возвращаемое значение, чтобы ваша логика IF работала должным образом.

Комментарии:

1. Идея в том, что его легче понять при чтении if (somethingWorked()) , чем if (!somethingFailed())