web-dev-qa-db-fra.com

Est-il préférable d'utiliser NOT ou <> lors de la comparaison des valeurs?

Est-il préférable d'utiliser NOT ou d'utiliser <> lors de la comparaison des valeurs dans VBScript?
est-ce:


If NOT value1 = value2 Then

ou ca:


If value1 <> value2 Then

mieux?

EDIT: Voici mon contre-argument.
Lorsque vous cherchez à annuler logiquement une valeur booléenne, vous utiliserez l'opérateur NOT, donc c'est correct:


 If NOT boolValue1 Then

et lorsqu'une comparaison est effectuée dans le cas du premier exemple, une valeur booléenne est renvoyée. soit les valeurs sont égales à Vrai, soit elles ne sont pas Faux. Il serait donc approprié d'utiliser l'opérateur NOT, car vous annulez logiquement une valeur booléenne.

Pour la lisibilité, placer la comparaison entre parenthèses serait probablement utile.

30
Tester101

Le dernier (<>), car le sens de l'ancien n'est pas clair à moins que vous ne compreniez parfaitement l'ordre des opérations tel qu'il s'applique aux Not et = opérateurs: une subtilité facile à rater.

42
Joel Coehoorn

Parce que "not ... =" est deux opérations et "<>" n'en est qu'une, il est plus rapide d'utiliser "<>".

Voici une rapide expérience pour le prouver:

StartTime = Timer
For x = 1 to 100000000
   If 4 <> 3 Then
   End if
Next
WScript.echo Timer-StartTime

StartTime = Timer
For x = 1 to 100000000
   If Not (4 = 3) Then
   End if
Next
WScript.echo Timer-StartTime

Les résultats que j'obtiens sur ma machine:

4.783203
5.552734
1
Regis Desrosiers

D'accord, la lisibilité du code est très importante pour les autres, mais surtout pour vous-même. Imaginez à quel point il serait difficile de comprendre le premier exemple par rapport au second.

Si le code met plus de quelques secondes à lire (comprendre), il y a peut-être une meilleure façon de l'écrire. Dans ce cas, la deuxième façon.

1
user38735

Le deuxième exemple serait celui à utiliser, non seulement pour la lisibilité, mais en raison du fait que dans le premier exemple, If NOT value1 retournerait une valeur booléenne à comparer avec value2. IOW, vous devez réécrire cet exemple en

If NOT (value1 = value2)

ce qui rend inutile l'utilisation du mot clé NOT.

0
hmcclungiii