Ich stimme Anton zum großen Teil zu.
Über die Lebenszeit muss man sich Gedanken machen.
Zum Teil werden da - was mir auch dauernd passiert - Diskurse aus anderen Programmierkontexten auf einen anderen Kontext übertragen.
So richtig global ist das ja eigentlich nicht, was wir da in die globals schreiben.
In vollen C oder Java Anwendungen bedeutet global für mich, dass von JEDEM Punkt der Anwendung auf diese Variablen zugegriffen werden kann. Und in Notes beschränkt sich das ja dann auf Kontexte die wesentlich kleiner sind.
Solange man STRIKT eine Reihenfolge einhält, in der in die globalen Variablen geschrieben wird, halte ich es völlig unproblematisch.
Hast du etwa einen Agenten,
in den in dem die globalen Variablen in den globals deklariert werden
in dem es dann als erste Funktion oder codesection im initialize die globale Variablen gefüllt werden
und dann ein paar Funktionen, in dem die globalen Variablen ausgelesen werden.
würd ich immer globale Variablen verwenden (es sei denn ich vergess das)
Problematisch wird es, wenn du
- in Funktion1 die Variable mit einem Wert belegst
- in Funktion2 die Variable ausliest
- in Funktion3 die Variable beschreibst
- in Funktion4 den geänderten Wert der Variable ausliest
Da verliert man leicht den Überblick.
Solange du aber wirklich eine Kontrolle über die Sequenz hast, in der in die globalen Variablen geschrieben wird, ist es kein Problem.
Je länger der Lebenszyklus der globalen Variablen (etwa in Masken länger als in Agenten), desto wahrscheinlicher wird es, dass du die Kontrolle über die Sequenz hast, in der in die globalen Variablen geschrieben und aus ihnen gelesen wird.
Vermutlich macht die Regel Sinn, dass eine globale Variable nur genau 1x mit einem Wert belegt wird und zwar möglicht weit oben. Gibt aber Einzelfälle, in denen es völlig ok ist, diese Regel zu brechen.
Namenskonventionen können helfen (hab ich aber in dem Kontext noch nie benutzt), d.h. alle globalen Variablen mit glob-Präfix.
Ein großes Problem kann nämlich sein, dass du in einer Funktion den gleichen Variablen-Namen wie die globale Variable noch mal deklariert. Dann kommt es zum Variablen-Shadowing.