it-swarm.com.de

IntelliJ IDEA: Die boolesche Methode XX wird immer invertiert

Ich bekomme die Warnung "Boolesche Methode wird immer invertiert", wenn in IntelliJ Fusseln laufen. Ich habe mehrere ähnliche Warnungen in meiner Codebasis. Welcher grundlegende Codierstil fehlt mir? 

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

versuchen Sie, false zurückzugeben, wenn bluetoothAdapter null ist, andernfalls geben Sie die Ausgabe von isEnabled() zurück.

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

Weiterlesen:

In Clean Code schreibt Robert Martin: „Negative sind nur etwas schwieriger als positive zu verstehen. Wenn es möglich ist, sollten Konditionale als positiv ausgedrückt werden. “(Martin, [G29]). IntelliJ IDEA hat drei Inspektionen, damit Sie positiv bleiben.

https://blog.jetbrains.com/idea/2014/09/the-inspection-connection-issue-2/ (Eintrag Nr. 4, negative Bedingungen vermeiden)

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

19
Robin Vinzenz

Time Saver: Negiert immer den booleschen Methodenaufruf. Kein Grund zur Sorge.


Warum es passiert

Wenn wir eine Methode haben foo()

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

Und wird nur wie !foo() aufgerufen, 

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

Weil wir nur !foo() und nicht foo() aufrufen.

Die Warnung fordert uns auf, foo() positiv zu nutzen.

Entfernen Sie die Warnung

Durch Invertieren des Rückgabewerts der Methode foo ()

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

Rufen Sie jetzt die Methode auf

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

Zur Vereinfachung siehe folgenden Code:

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}

Weil Sie die Bedingung beurteilen müssen, ob ein Mädchen ist, Damit Sie vermeiden sollten zu beurteilen, ob ein Junge ein "!" 

0
Licat Julius