Tester101
Tester101

Reputation: 8182

Is it better to use NOT or <> when comparing values?

Is it better to use NOT or to use <> when comparing values in VBScript?
is this:


If NOT value1 = value2 Then

or this:


If value1 <> value2 Then

better?

EDIT: Here is my counterargument.
When looking to logically negate a Boolean value you would use the NOT operator, so this is correct:


 If NOT boolValue1 Then

and when a comparison is made in the case of the first example a Boolean value is returned. either the values are equal True, or they are not False. So using the NOT operator would be appropriate, because you are logically negating a Boolean value.

For readability placing the comparison in parenthesis would probably help.

Upvotes: 33

Views: 145454

Answers (5)

qwerty keyboard
qwerty keyboard

Reputation: 109

Readability wise I wouldn't use "<>" unless you drop a comment somewhere explaining what it is.

I was trying to follow the NQueens Benchmark on the HP Museum site and I had NO idea what that was!

Worse still, they sprinkled that in a different languages where "<>" isn't valid. Search engines don't really work with symbols, so searching it up didn't help.

Upvotes: 0

Joel Coehoorn
Joel Coehoorn

Reputation: 416111

The latter (<>), because the meaning of the former isn't clear unless you have a perfect understanding of the order of operations as it applies to the Not and = operators: a subtlety which is easy to miss.

Upvotes: 46

Regis Desrosiers
Regis Desrosiers

Reputation: 565

Because "not ... =" is two operations and "<>" is only one, it is faster to use "<>".

Here is a quick experiment to prove it:

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

The results I get on my machine:

4.783203
5.552734

Upvotes: 2

hmcclungiii
hmcclungiii

Reputation: 1805

The second example would be the one to go with, not just for readability, but because of the fact that in the first example, If NOT value1 would return a boolean value to be compared against value2. IOW, you need to rewrite that example as

If NOT (value1 = value2)

which just makes the use of the NOT keyword pointless.

Upvotes: 0

user38735
user38735

Reputation:

Agreed, code readability is very important for others, but more importantly yourself. Imagine how difficult it would be to understand the first example in comparison to the second.

If code takes more than a few seconds to read (understand), perhaps there is a better way to write it. In this case, the second way.

Upvotes: 1

Related Questions