If Func(Par) = False Then oder If Not Func(Par) Then

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Bartosz.

    If Func(Par) = False Then oder If Not Func(Par) Then

    Moin,

    kurze Frage am Abend, nachdem ich heute hier bei vb-paradise etwas gestöbert habe. Ich habe einen Kommentar gelesen, worin es hieß, dass (hier als Bspl)

    VB.NET-Quellcode

    1. If Func(Par) = False Then​
    [Zitat] redundant sei. Es müsse

    VB.NET-Quellcode

    1. ​If Not Func(Par) Then
    heißen. Ich finde das leider nicht mehr.

    Mittlerweile musste ich drüber nachdenken. Nehmen wir an, Function kommt false zurück und das wollen wir behandeln. Wir wollen das so programmieren, damit das If schnell beendet ist und wenig Code enthält und drunter geht's mit dem normalen Code weiter. Beide Wege funktionieren natürlich:

    1.)
    If
    ​$\underbrace{ Func(Par) = False}_{true}$
    damit der Code innen ausgeführt wird.

    2.)

    If Not
    $\underbrace{ Func(Par)}_{false}$
    Denken wir uns hier unter eine Klammer, die das Not mit einschließt, dann

    If
    $\underbrace{ Not Func(Par)}_{true}$​
    funktioniert das auch.

    Geht es hier nur um Stil und Lesbarkeit? Meine Frage ist jetzt, wie ihr das programmiert. :)
    An die Neulinge: Nutzt Option Strict On und Option Infer Off. Dadurch kommt ihr mit Datentypumwandlungen nicht durcheinander und der Code verbessert sich um Einiges! Solche Fehler à la Dim Beispiel As Integer = "123" können nicht mehr passieren.

    Bartosz schrieb:

    Geht es hier nur um Stil und Lesbarkeit?
    Ja. Um Performance braucht man sich bei den Beispielen nicht zu kümmern (der Unterschied hier ist wahrscheinlich bei 3% der Ausführungszeit, die wohl eh nur im µs-Bereich ist, falls überhaupt). Aber allgemein sind eben Vergleiche v.a. mit True redundant, bei False eben durch ein Not ersetzbar.
    If CheckBox1.Checked = False -> If Not CheckBox1.Checked
    If MyShape.IsVisible = True -> If MyShape.IsVisible
    Gleicher Inhalt, besser lesbar. Und daher die Antwort darauf, wie ich programmiere: niemals mit True/False-Vergleichen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @VaporiZed Ok, danke!

    @ErfinderDesRades sorry, mir ging's um die Visualisierung. Ich dachte, so ist es am besten. Hier das gleiche nochmal als Bild.
    Bilder
    • 2 - Kopie.jpg

      71,8 kB, 1.147×494, 29 mal angesehen
    An die Neulinge: Nutzt Option Strict On und Option Infer Off. Dadurch kommt ihr mit Datentypumwandlungen nicht durcheinander und der Code verbessert sich um Einiges! Solche Fehler à la Dim Beispiel As Integer = "123" können nicht mehr passieren.