Frage

Ich bin der Vorbereitung eine Klasse in Visual Basic 2005-targeting-Visual-Basic-6-Programmierern, um die Migration der .NET-Plattform.

Ich möchte ein Wort der Beratung darüber, ob Sie zu empfehlen, Sie immer zu aktivieren Option Strict oder nicht.

Ich habe bisher ausschließlich mit C-style programming languages, hauptsächlich Java und C#, also für mich explizite Typumwandlung ist etwas, was ich immer erwartet habe ich zu tun, da es für Sie nie eine option.
Aber ich erkenne den Wert der Zusammenarbeit mit einer Sprache, die integrierte Unterstützung für späte Bindung,, weil Sie nicht mit übermäßig explizit über Typen im code tatsächlich Zeit spart.Dies wird weiter bewiesen durch die populäre Verbreitung dynamisch typisierte Sprachen, auch auf die .NET Plattform mit der Dynamic Language Runtime.

Mit diesem im Verstand, sollte jemand, der sich nähert .NETZ zum ersten mal mit VB.NET und mit einem VB6 hintergrund werden aufgefordert, sich in die Denkweise der arbeiten müssen mit compile-time type checking denn das ist die "best practice" in der CLR?Oder ist es "OK", um weiterhin in den Genuss der Vorteile der späte Bindung?

War es hilfreich?

Lösung

Ja! Option Strict ist definitiv eine der besten Praxis für .Net. Betonen Sie, dass .Net ist es Kern ist eine stark typisierte Plattform, und wird, bis das DLR mehr vollständig unterstützt. Mit wenigen Ausnahmen sollte jeder Dim und Function haben einen expliziten Typ mit ihm zu gehen erklärt. Dinge wie LINQ oder Boo und JScript sind die Ausnahmen, die die Regel bestätigen.

Hier sind einige andere Dinge hinweisen. Ich bin sicher, du bist wohl bewusst, all dies, aber ich habe mit arbeiten musste und viele VB.Net Code hält von ehemaligem VB6ers geschrieben, und so ist dies etwas von einem wunden Punkt für mich:

  • Sie nicht die alten String-Funktionen verwenden: LEN(), REPLACE(), TRIM(), etc
  • ungarische Warzen sind nicht mehr empfohlen. oMyObject und sMyString sind nicht koscher. Zeigen Sie ihnen die Referenz in Microsofts Design-Richtlinien , wenn sie nicht glauben, Sie.
  • Stellen Sie sicher, dass sie über die neuen AndAlso / OrElse logischen Operatoren
  • lernen
  • parametrisierte Abfragen und moderne ADO.Net. Kann das nicht genug betonen. Sie sollten müssen nie wieder CreateObject() nennen.
  • Scope funktioniert anders (und ist wichtiger) in .Net, als es in VB6 war. VB.Net hat noch Module, aber sie sind jetzt mehr analog zu einer statischen Klasse. Es ist wichtig zu verstehen, wie in einer echten objektorientierten Umgebung zu entwickeln unterschiedlich sein, wie die teilweise OOP Unterstützung von VB6 vorgesehen gegenüber. Es gibt keinen guten Grund mehr Methoden zu erlauben, gottlos Längen auszuführen.
  • Stellen Sie sicher, dass sie eine Einführung in Generics und Schnittstellen (einschließlich IEnumeralbe(Of T)) erhalten, und erfahren, warum sie nie wieder eine ArrayList verwenden.

konnte ich weitermachen, aber ich werde Sie nur Hidden Features von VB.Net zu den Punkt Frage zum rant schließen.

Andere Tipps

Die Zeit, mit der Option der Entwicklung Strict ermöglichen wird später Sie enorme Menge an Debug-Zeit sparen.

Option Strict kann natürlich nicht gut Unit-Tests ersetzen - aber weder umgekehrt. Während Unit-Tests kann die gleichen Fehler wie Option Strict erkennt, bedeutet dies, dass es in den Unit-Tests kein Fehler ist, dass Unit-Tests werden oft und früh getan, etc ....

Schreiben von Tests gute Einheit ist nicht immer trivial und braucht Zeit. Allerdings führt der Compiler bereits einige der Tests - in Form von Typprüfung. Am allerwenigsten spart Zeit. Wahrscheinlicher ist, das spart viel Zeit und Geld (zumindest gelegentlich), weil die Tests nicht alle Fälle deckten fehlerhafte / waren / vergessen haben, für Änderungen im Code zu berücksichtigen.

Um es zusammenzufassen, gibt es keine Garantie, dass Ihre Unit-Tests korrekt sind. Auf der anderen Seite gibt es eine starke Garantie, dass der Typ vom Compiler korrekt ist oder zumindest durchgeführte Prüfung, dass seine Glitches (nicht markiert Matrixkovarianz, Bugs mit zirkulären Referenzen ...) sind bekannt und gut dokumentiert.

Ein weiteres Summe-up: Ja, Option Strict On ist definitiv best practice In der Tat, ich habe seit Jahren in Online-Communities wie diese funktioniert.. Jedes Mal, wenn jemand Hilfe zu Code benötigt, die offensichtlich nicht haben Option Strict aktiviert ist, würden wir dies höflich darauf hinweisen und sich weigern, weitere Hilfe zu geben, bis dieses Problem behoben wurde. Es spart so viel Zeit. Oft wurde das Problem danach verschwunden. Dies ist in gewisser Weise analog zu korrekten HTML verwenden, wenn Hilfe in einem HTML-Support-Forum zu fragen: ungültige HTML funktionieren könnte, aber dann wieder, es könnte nicht und die Ursache der Probleme. Deshalb weigern sich viele Profis zu helfen.

YES !!!!

Meiner Meinung nach sind sowohl als Entwickler als auch als Hochschullehrer YES.

Am besten ist es in die guten Gewohnheiten von Anfang an zu bekommen, macht es den gesamten Prozess viel einfacher, und Option Strict ist eines jener Elemente, die meiner Meinung nach ist ein benötigtes Element.

hinzugefügt

Es gibt buchstäblich Tonnen von Gründen, die, warum aufgeführt werden könnte, aber der Schlüssel ist, dass es eine bewährte Methode ist, und wenn eine neue Sprache unterrichtet, ist es von entscheidender Bedeutung, diese Best Practices von Anfang an zu unterrichten.

Denken Sie daran, es gibt zwei Ebenen.

Option Explicit Option Strict

Der Hauptunterschied zwischen den beiden ist, dass Option Strict deaktiviert VB die automatische Konvertierung der verschiedenen Daten-Typen.Sie müssen explizit CType oder einem anderen Daten-Konvertierungs-Funktion für die Zuordnung einer Variablen zu einem anderen Typ.

Ich benutze VB seit 1.0 und während ich sehe den Punkt von diesem ich denke, dass die Strenge ist mehr als eifrig paritcularily beim Umgang mit Objekten umgesetzt oder geerbt, unterschiedliche Schnittstellen und Klassen.

Ich würde beginnen mit Strenge auf den ersten, und wenn es beginnt immer in Ihren Weg fallen dann nach unten, um Explizit.Aber nicht immer beide ausschalten, das ist purer Wahnsinn und übermäßige debugging-Zeit.

Im Laufe der Jahre mit VB ich ziemlich viel verwenden Sie Doppelte für alle floating-point-Variablen.Auf diese Weise vermeiden Sie viele Probleme mit Rundung und Verlust der Genauigkeit.In VB6 habe ich lange verwendet, da es eine 32-bit-Ganzzahl, aber Integer funktionieren genauso gut .NET, wie es ist ein Int32.Ich empfehle auch die Verwendung Int32, Int16, etc instead of Integer,Long, etc., in Fall von Microsoft immer entscheidet, neu zu definieren, die diese keywords.

Ich werde mit RS Conley anderer Meinung zu sein (sehr ungewöhnlich). Meine Lieblings VB6-Gurus - Francesco Balena, Dan Appleman - alle unbeliebt automatische Konvertierung von VB6 und sind in bevorzugen Option Strict in .NET. Viele erfahrene Programmierer VB6 wissen automatische Konvertierung als „böse Art Zwang“ ( pdf ) und freut sich auf Option Strict zu wechseln.

Es ist gelegentlich besser ein kleines Modul ohne Option Strict zu verwenden, viele komplizierte Reflexion Code zu vermeiden. Aber das ist die Ausnahme, die die Regel bestätigt.

Böhms Begriff Da ein Problem früher im Entwicklungszyklus zur Festsetzung der am wenigsten Ressourcen verbraucht, ich bin ein Fan von jedem Werkzeug, das Entwicklern hilft, „get it right“ so früh wie möglich. Aus diesem Grunde bin ich ein Befürworter der Dinge wie IntelliSense, das ist sowohl eine Effizienzsteigerung sowie ein Werkzeug, das Sie Code früher im Zyklus Arbeitsgerät hilft. (Arbeiten, aber nicht unbedingt korrekt.)

Aus diesem Grund habe ich auch die Verwendung von Option unterstützen Strenge als eine Möglichkeit, Fehltritte zu helfen, und die sich daraus ergebenden Korrekturen tief in „Design-Zeit.“

Wenn Sie Ihre Typen überprüft, die gewohnt sind, dann möchten Sie wahrscheinlich Option streng auf. Drehen aus kann Vorteile haben, aber wenn Ihr Gehirn nicht zu Spek Fehler abgestimmt ist, wo der Compiler in der Regel klagen würde, dann würde ich es lassen sagt auf. Ich habe in VB.Net viel gearbeitet, und ich muss sagen, dass, obwohl ich mit Optionen arbeiten streng die meiste Zeit ausgeschaltet, ich viele Situationen gesehen habe, wo auf sie umgedreht hätte verhindert eine ganz wenige Bugs.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top