Was ist Option Strict und was bringt es ???

  • Allgemein

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Die gelegentliche Verwendung der Suchfunktion empfiehlt sich.

    [Allgemein] Option Strict On/Off?
    [VB 2008] Option Strict On
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Option Strict On ist der grundlegende Ausgang für saubere Codes.

    Als Beispiel:
    Du hast einen Apfel. Diesen gibst du einem Freund. Und plötzlich hat er eine Birne in der Hand.
    Wie geht das? Richtig, das ist Schwachsinn.
    Genauso ist es in VB. Du hast den Typ Double und willst diesen auf einmal in einem String anzeigen.
    Mit Option Strict On wird dir gleich gezeigt, dass das falsch ist und du musst schreiben:

    CDbl(TextBox1.Text)

    Hier ist allerdings die Vorraussetzung, dass der Text eine Zahl ist. Darum ist das eine halbwegs gute Methode.
    Darum gibt es auch TryParse.
    Damit wird versucht zu konvertieren. Wenn es nicht geht wird aber auch keine Exception geworfen!
    Also mach:

    Double.TryParse(TextBox1.Text, Double)

    Als Beispiel bei Konvertierungen...
    erfinderdesrades.unitweb.de/Pr…/Blogs/WarumStrictOn.html
    Allgemein hilft dir diese Compiler Flag Dinge nicht zu verwechseln. So kannst du einem Integer keinen String zuweisen, musst bei Funktionen Rückgabetypen nennen etc. Alles ist ausführlich auch mit Beispielen vom ErfinderDesRades erklärt, einfach dem Link von wertherchen folgen.
    @programmer71:

    Stimmt so nicht ganz.
    Ich hab einen Apfel und gebe ihn einem Freund,
    der Freund will aber ne Birne und stellt sich statt dem Apfel ne Birne vor, weil er
    zu faul ist nach ner Birne zu fragen.

    Wenn du einem String eine zahl (ohne "") zuweist, dann bekommst du keinen Fehler,
    weil die IDE zu "faul" ist, nach nem String zu fragen. Sie versucht dann den Integer in einen
    String zu konvertieren.

    Und da gibts dann Fälle bei denen dabei absoluter Ranz rauskommt, und ohne Fehler weißt du eben
    nicht wo das Problem ist -> Option Strict On.
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Nikx“ ()

    @TE
    Manieren in der Programmiersprache heißt übersetzt : Option Strict ON
    Genauso wie Du Dein Essen mit Besteck isst, Beispiel (Du isst eine Suppe mit einem Löffel,nicht mit einer Gabel), so ist es auch
    mit Option Strict ON...

    Du wirst jetzt vielleicht sagen,"Pff Option Strict Off verlangt nicht zB CInt",doch spätensten dann, wenn eine Funktion ein String verlangt, und
    Du nur Integer ausgeben kannst, und plötzlich das Debugging abgebrochen wird, weil ein Integer nicht in Typ String konvertiert wurden konnte,
    wirst Du nur diese eine Geste interpretieren können ,


    *FACEPALM*...


    Mfg.eniking1998

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „enIking1998“ ()

    Naja, es gibt grausame nicht OO Programmierstile mit Option Strict On. Damit ists also net getan, hilft dir aber schon bei Grundlagen. Es bietet 100%ige Typensicherheit, wie es bei anderen Programmiersprachen von Anfang an ist. Der Compiler kann das zwar sehr gut händeln und fast immer läufts korrekt aber 1. nur fast immer & 2. mit Option Strict Off wird einem erlaubt gegen wichtige Grundlagen der OOP zu verstoßen.
    Option Strict Off ist historisch entstanden, als unter VB123 und DOS-Varianten eine Variable bei Verwendung deklariert wurde.
    Es sollte halt alles ganz einfach für den Entwickler / den Lernenden sein.
    Da gab es Dim x, da wurde eine Variable namens x vom Typ Variant angelegt (so was ähnliches wie Object), und beim 1. Zugriff wurde der Typ präzisiert.
    x = "bla" generierte einen String, x = 5 ein Integer.

    VB.NET-Quellcode

    1. x = "bla"
    2. x = 5
    führte zu einem Fehler.
    In C, C++, C# gibt es Option Strict Off nicht, da muss jede Variable ordnungsgemäß deklariert werden. So soll es auch sein.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany:
    Nur die Pflicht einer ordnungsgemäßen Definition ist eigentlich schon Option Explicit enthalten.

    Option Strict On geht noch einen Schritt weiter.
    Es verhindert die Zuweisung oder Übergabe von Datentypen und Objekten, bei denen nicht per Definition (oder explizitem Cast) feststeht, dass sie zusammen passen.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --