web-dev-qa-db-fra.com

IntelliJ IDEA: La méthode booléenne XX est toujours inversée

Je reçois un avertissement "La méthode booléenne est toujours inversée" lors de l'exécution de la fibre dans IntelliJ. J'ai plusieurs avertissements similaires dans ma base de code. Quel est le style de codage de base qui me manque? 

public static boolean isBlueToothEnabled(){
    final BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    if(bluetoothAdapter != null)
        return bluetoothAdapter.isEnabled();
    return  false;
}
13
mobileDev

essayez de renvoyer false si bluetoothAdapter est null, sinon renvoyez le résultat de isEnabled()

public static boolean isBlueToothEnabled(){
    final BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    if(bluetoothAdapter == null){
        return false;
    }
    return bluetoothAdapter.isEnabled();
}

Lire la suite:

Robert Martin écrit dans Clean Code: «Les négatifs sont juste un peu plus difficiles à comprendre que les points positifs. Donc, si possible, les conditionnels devraient être exprimés en positifs »(Martin, [G29]). IntelliJ IDEA en a trois inspections pour vous aider à rester positif.

https://blog.jetbrains.com/idea/2014/09/the-inspection-connection-issue-2/ (Entrée n ° 4: éviter les conditions négatives)

https://www.jetbrains.com/help/idea/2016.1/invert-boolean.html

19
Robin Vinzenz

Time Saver: nie toujours l'appel de méthode booléenne. Rien à craindre.


Pourquoi ça se passe

Si nous avons une méthode foo()

    boolean foo()
    {
        if(condition == true)
            return true;
        else
            return false;
    }

Et est appelé seulement comme !foo()

    class A
    {
        if(!foo())
            do something;
        ...
        if(!foo())
            do something else;
    }

Parce que nous appelons seulement !foo() et n’appelons pas foo().

L'avertissement nous demande d'utiliser foo() de manière positive.

Supprimer l'avertissement

En inversant la valeur de retour de la méthode foo (),

    boolean foo()
    {
        if(condition == true)
            return **false**;
        else
            return **true**;
    }

Appelez maintenant la méthode

    class A
    {
        if(foo())
            do the same thing;
    }
8
Amrit kumar

Pour simplifier, voir le code ci-dessous:

public boolean isBoy(int sex){ return sex == boy};

if(!isBoy(sex)){ // todo}

If do so, it called inverted. How to solve? see the other code below:

public boolean isGirl(int sex){ return sex == girl};

if(isGirl(sex)){ // todo}

Parce que vous devez juger de l’état de la condition d’une fille, afin d’éviter de juger si c’est un garçon et mettez un «! 

0
Licat Julius