Lors de la refactorisation du code, j’ai modifié les conditions, si non nulles, afin de respecter la convention de la majorité dans mon code de conduite.
if (!(foo == null))
au lieu de
if (foo != null)
Y at-il un avantage dans les deux déclarations?
Y a-t-il un avantage dans l'une ou l'autre déclaration en c #?
Je trouve le second plus lisible.
En dehors de cela, il n'y a pas de différence.
Il est plus important de choisir une convention avec votre équipe et de la respecter dans chaque base de code.
En supposant que vous n'avez pas cassé les surcharges d'opérateur ==
/!=
, je n'utiliserais que le second formulaire pour améliorer la simplicité et la lisibilité. Si vous avez avez des surcharges brisées de telle sorte qu'il existe une différence sémantique entre les deux, je suggérerais de corriger ces surcharges :)
Dans les rares cas où foo == null
est une indication plus claire de quelque chose, je le refactifierais probablement pour utiliser une variable locale:
bool somethingIsMissing = foo == null;
if (!somethingIsMissing)
{
...
}
Les parenthèses autour du foo == null
sont maintenant facultatives - utilisez ou non, selon votre goût. L'essentiel est que vous puissiez utiliser le nom de la variable pour rendre le sens sémantique très clair .
normalement if (!(foo == null))
est utilisé lorsque vous avez plus de variables à prendre en compte, par exemple
if (!(f1 == 'a' && f2 != 'b'))
parfois est simplement plus facile de cette façon qui transforme tout le contraire, spécialement lorsque vous utilisez des opérateurs au niveau du bit.
Le premier utilise deux opérateurs, le second en utilise un. Donc techniquement, le second est plus simple.
Le seul endroit où j'utiliserais !(a == b)
serait dans l'implémentation d'opérateur de !=
comme ceci:
public static bool operator != (MyType a, MyType b)
{
return !(a == b);
}
À mon avis, il n'y a pas de différence, le compilateur optimisera quand même le code. Mais je préférerais if(foo != null)
. Moins de parenthèses et plus facile à lire.
Mon préféré est le second, car il est un peu plus lisible que le premier.
Ils ne font aucune différence, ce n'est donc qu'une question de choix pour vous.
Cependant, si vous avez beaucoup d'autres variables dans votre clause if, la première peut être celle à utiliser.
Votre choix à la fin.