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;
}
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
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;
}
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 «!