2017-01-11 3 views
2

Ich erstelle ein Add-In für Microsoft Excel und verwende ein Modul zum Speichern von Variablen (die sich während der Laufzeit nicht ändern), auf die Klassen und andere Module in der App zugreifen . Dies ist eine bequemere Art, Werte hart zu codieren, die ich zu verschiedenen Zeitpunkten im Entwicklungszyklus finden und ersetzen muss.Globale Konstanten zum Speichern von Umgebungsvariablen verwenden

Die Variablen sind Dinge wie die App-Version oder das Arbeitsmappe Passwort:

Option Explicit 
Option Private Module 

Global Const APP_ID = "XXY" 
Global Const APP_VERSION = "1.00" 
Global Const WORKSHEET_PASSWORD = "s0Me_pa$$w0rD" 
Global Const DATA_TABLE = "tblStockData" 
Global Const FORM_DEFAULT_VALUE = 200 

ich mich gefragt, ob mir jemand sagen kann, ob diese schlechte Praxis ist, und wenn ja, was für eine bessere Vorgehensweise würde Sein?

+0

Nur eine kleine Notiz - wahrscheinlich ist es eine etwas bessere Idee, 'public' statt' global' zu verwenden - http://StackOverflow.com/questions/3815547/what-is-the-difference-between-dim -global-öffentlich-privat-als-modular-Feld – Vityata

Antwort

3

Normalerweise mache ich genau das gleiche oder zwei andere Dinge, abhängig von der Größe der Anwendung. Wenn es etwas Kleines ist, benutze ich Ihren Ansatz. Dies sind jedoch die anderen Ansätze, die ich verwende.

Erster Ansatz:

Wenn der Benutzer soll das Passwort oder die default_value ändern, ich mache ein separates Blatt, genannt „Einstellungen“ und ich schreibe sie dort. Dann mache ich eine öffentliche Funktion für das Passwort wie folgt aus:

public function GetPassword as string 
    GetPassword = [set_password] 
end function 

Zweiter Ansatz:

Wenn dies eine große Anwendung mit vielen konstanten und öffentlichen Variablen ist, wird der Umfang irgendwie „schmutzig“ und es ist schwierig, die Variablen zu finden. Also mache ich eine Klasse der Konstanten und ich erkläre sie dort. Dann ist es einfacher, sie anzurufen.

Etwas wie folgt aus:

Private Const p_First_COLUMN_TO_FILL = 8 

Public Property Get FIRST_COLUMN_TO_FILL() As Long 
    FIRST_COLUMN_TO_FILL = p_First_COLUMN_TO_FILL 
End Property 

Wenn also meine Klasse ist clsConstants, erkläre ich es als Public objCon As clsConstants und jetzt mit objCon.FIRST_COLUMN_TO_FILL ich bekommen, was ich will. Der Umfang ist auf diese Weise irgendwie sauberer. Sie können auch mehr als eine Klasse von Konstanten erstellen, je nachdem, für was sie verwendet werden.

Verwandte Themen