Gültigkeitsbereiche

Gültigkeitsbereiche und Lebensdauer von Variablen

Jede Sprache hat Regeln für die Definition des Gültigkeitsbereichs und der Lebensdauer von Variablen und Prozeduren. Basic macht da keine Ausnahme, obwohl die Regeln sich leider anscheinend mit jeder Version ändern. Während der verwickelten Geschichte der Sprache haben alle die Versuche, neue Zusätze einzufügen, ohne wiederum dafür mit alten zu brechen, ein heilloses Durcheinander angerichtet. Die Basic-Landschaft ist übersät von aufgegebenen Modifikatoren für Reichweite und Gültigkeitsbereich, wie Shared, Common und jetzt auch noch Global. In der aktuellen Version haben selbst die besten Absichten die Angelegenheit nicht durchschaubarer gemacht:

Das Schlüsselwort Dim (das Wort mit der absolut schlechtesten Gedächtnisstütze für die Bedeutung) erstellt eine Variable mit lokalem Gültigkeitsbereich und vorübergehender Lebensdauer, wenn es innerhalb einer Prozedur verwendet wird (außer dass die Lebensdauer unbegrenzt ist, wenn die Prozedur als statisch deklariert wird). Wenn es aber außerhalb einer Prozedur verwendet wird, erstellt Dim eine Variable mit dem Gültigkeitsbereich Private und unbegrenzter Lebensdauer (trotz der Tatsache, dass die Lebensdauer in einem Standardmodul wiederum wichtig ist).

Private und Public sind Deklaratoren für Variablen; für Konstanten, Deklarationen, Typen und Prozeduren sind es aber Modifikatoren.

Falls du das durchschaust und Dim immer richtig verwendest, brauchst du dieses Kapitel nicht. Für alle anderen könnte es hilfreich sein, sich einen Mythos zu erschaffen und vorzugeben, daran zu glauben. Hier sind die Geboten für einen möglichen Basic-Daten-Mythos:

  1. Das Wort Dim bedeutet in der Eingeborenensprache eines Basic-Volksstammes im nordöstlichen Cathistan tatsächlich Lokal. Deshalb sollte man Dim nur für lokale Variablen verwenden. Es sieht zwar so aus, als wenn Basic Dim auch in anderen Zusammenhängen zulässt, der Code wird dann aber von bösen Geistern heimgesucht.
  2. Verwende Static für lokale Variablen mit unbegrenzter Lebensdauer. Deklariere niemals Funktionen als Static, weil es die Bedeutung von Dim verändert. Außerdem wird man davon Warzen bekommen.
  3. Verwende Private für Variablen mit modularem Gültigkeitsbereich. Widerstehe der Versuchung, in diesem Zusammenhang Dim zu verwenden, obwohl es für einige Zeit zu funktionieren scheint.
  4. Verwende Public für Variablen mit globalem Gültigkeitsbereich. Vor langer, langer Zeit (nach anderen Quellen in der vorletzten Version) bedeutete Global Public. Einige Abweichler vom Wahren Glauben behaupten, dass es immer noch als eine Art Huldigung an die böse Gottheit Kompatibilität funktioniert. Ignoriere diese Gerüchte.
  5. Deklariere dynamische (in der Größe veränderbare) Datenfelder immer mit leeren Klammern und dem richtigen Variablen-Schlüsselwort. Die Behauptung, dass Redim ohne vorherige Deklaration auf lokale Variablen angewendet werden kann, führt unweigerlich in den Wahnsinn.
  6. Gib immer Public oder Private für benutzerdefinierte Typen und Deklarationsanweisungen an. Bei Klassen- und Formularmodulen erzwingt Basic die Deklaration, bei Standardmodulen aber bietet es eine automatische Voreinstellung. Einige Experten glauben, dass sie diese Regel auch bei Konstanten und Prozeduren befolgen sollten. Wenn man jedoch die Standardeinstellung verwendet, wird man trotzdem weiterleben.