Frage

Was ist die beste Praxis für globale Variablen in einer VB.NET WinForms-Anwendung zu speichern. Zum Beispiel, wenn sich ein Benutzer anmeldet in einer App können Sie ein Current Objekt zu speichern, die in der gesamten App zugegriffen werden kann. Sie könnten speichern diese als ein Objekt in einem Modul oder eine Klasse erstellen, die Mitglieder für alle erforderlichen Globals enthält, würden Sie immer noch, obwohl die Instanz dieser irgendwo speichern müssen.

Bietet der Rahmen eine einfache Lösung für das?

War es hilfreich?

Lösung

Ich denke, ‚nicht‘ ein wenig hart ist, hier ein Zitat von Steve McConnell:

  

Wird mit Disziplin, globale Variablen   ist in verschiedenen Situationen hilfreich

Ich denke nur, wie ein guter Zimmermann das richtige Werkzeug für den Job hat und das richtige Werkzeug verwenden, wenn die Notwendigkeit entsteht, Programmierer auch alle Werkzeuge zur Verfügung, verwendet werden soll.

Gerade von der 'Tour de Force' Code Complete gibt mehrere Gründe, globale Daten zu verwenden:

  • Erhaltung der globalen Werte
  • Streamlining Verwendung von sehr häufig Daten
  • Die Beseitigung tramp Daten

McConnell sagt auch:

  

Verwenden Sie Globale Daten nur als letztes Mittel.   Bevor Sie greifen global zu verwenden   Daten, ein paar Alternativen.

Hier sind die Alternativen er Listen:

  • Sie zunächst jede Variable macht lokale und globale Variablen nur, wie Sie benötigen, um
  • Unterscheiden zwischen globalen und Klasse Variablen
  • Verwenden Sie Zugriffsroutinen

Die Dinge, die ich hier erwähnt habe bekommen große Reichweite in dem fantastischen Buch Code Complete

Andere Tipps

Es gibt etwa eine bewährte Praxis im Bereich der Verwendung von globalen Variablen.

"Nicht."

(Wenn diese hart klingt, dass sich die Dinge wie Current normalerweise in etwas gehören, die die Umwelt bereits eine eindeutige Instanz für Sie unterhält, wie die Session. Die API nachschlagen, den Strom zu erhalten Sitzung, speichern sie Ihre Current dort und von dort abrufen. sie Ihr eigenes Globals nicht schaffen, die Ihre Anwendung machen wird schwieriger zu pflegen und verletzlich Bedingungen zu fahren.)

Sie können speichern global zugänglichen Variablen als öffentliche Nur-Lese-statische Eigenschaften der entsprechenden Klasse, wie derjenige, der es schafft oder auffüllt.

Die Verwendung von statischen / globalen Variablen ist auf die Testbarkeit des Codes stark schädlich, da ein Test nicht sicher sein kann, dass die Objekte, die es manipuliert nicht scheinbar nicht verwandte Bereiche der Code-Basis in Nebenwirkungen verursachen.

Wenn Sie eine Klasse, die eine Instanz der Klasse Current braucht, ist es für sie in seinem Konstruktor machen fragen.

Sehen Sie hier für weitere Informationen: http://misko.hevery.com/code -reviewers-guide / Fehler-Krokant-global-state-Singletons /

Meine Praxis ist globale Variablen zu setzen wie Current ConfigFilePath und ähnliche in program.vb (Startklasse mit sub Haupt ). Auf diese Weise niemand verwendet globale Variablen gedankenlos als ihre müssen durch zugegriffen werden Programm Namespace.

In der Geschäftslogik, verwende ich nie direkt globale Variablen. Wenn irgendeine Funktion globale Variable verwenden muss, muss sie als Funktionsparameter gesendet werden.

Es gibt keine Möglichkeit, mit globalen Variablen zu vermeiden. IMHO, ist es besser, sie mit ihren wirklichen Namen zu nennen und sie sorgfältig verwenden sie dann in Singletons, Sitzungen zu maskieren oder Dateien.

Der Singletonmuster ist sicherer als ein Garten Vielzahl global.

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