it-swarm.com.de

Ist es besser, NOT oder <> zu verwenden, wenn Sie Werte vergleichen?

Ist es besser, NOT oder <> zu verwenden, wenn Sie Werte in VBScript vergleichen?
ist das:


If NOT value1 = value2 Then

oder dieses:


If value1 <> value2 Then

besser?

EDIT: Hier ist mein Gegenargument.
Wenn Sie versuchen, einen Booleschen Wert logisch zu negieren, würden Sie den NOT-Operator verwenden. Dies ist also richtig:


 If NOT boolValue1 Then

und wenn im Fall des ersten Beispiels ein Vergleich durchgeführt wird, wird ein Boolescher Wert zurückgegeben. Entweder sind die Werte gleich True oder sie sind nicht False. Die Verwendung des NOT-Operators ist daher sinnvoll, da Sie einen Booleschen Wert logisch negieren.

Zur besseren Lesbarkeit wäre es wahrscheinlich hilfreich, den Vergleich in Klammern zu setzen.

30
Tester101

Letzteres (<>), Da die Bedeutung des ersteren nur klar ist, wenn Sie die Reihenfolge der Operationen für Not und = Genau kennen. Betreiber: eine Subtilität, die leicht zu übersehen ist.

42
Joel Coehoorn

Da "nicht ... =" zwei Operationen und "<>" nur eine ist, ist die Verwendung von "<>" schneller.

Hier ist ein kurzes Experiment, um es zu beweisen:

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

Die Ergebnisse, die ich auf meinem Computer erhalte:

4.783203
5.552734
1

Einverstanden ist, dass die Lesbarkeit des Codes für andere sehr wichtig ist, aber noch wichtiger für Sie. Stellen Sie sich vor, wie schwierig es wäre, das erste Beispiel im Vergleich zum zweiten zu verstehen.

Wenn das Lesen (Verstehen) von Code länger als ein paar Sekunden dauert, gibt es möglicherweise eine bessere Möglichkeit, ihn zu schreiben. In diesem Fall der zweite Weg.

1
user38735

Das zweite Beispiel ist das richtige, nicht nur aus Gründen der Lesbarkeit, sondern aufgrund der Tatsache, dass im ersten Beispiel If NOT value1 einen booleschen Wert zurückgeben würde, der mit value2 verglichen werden soll. IOW, Sie müssen dieses Beispiel umschreiben als

If NOT (value1 = value2)

das macht die Verwendung des NOT-Schlüsselworts nur sinnlos.

0
hmcclungiii