Autor Thema: Stilfrage : Globale Variablen  (Gelesen 1769 mal)

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Stilfrage : Globale Variablen
« am: 04.04.08 - 15:49:43 »
Hi,

Ich habe da mal eine Frage zu globalen Variablen.

Benutz man ihr die oder übergebt ihr lieber immer die Werte die ihr braucht.

Es geht bei meiner Frage um folgendes. Ich arbeite ja schon lange an der Anwendung die Server ausliesst und überwacht.

Nun hat jeder Server ein eigenes Dokument mit verschiedenen Einstellungen.
Nun hatte ich gedacht vllt ist es sinnvoll, dass man alle Einstellung global hält so dass die einzelnen Funktionen darauf zu greifen und ich diese nicht ständig übergeben muss.
Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Stilfrage : Globale Variablen
« Antwort #1 am: 04.04.08 - 16:18:35 »
... je nach Anforderung halte ich bestimmte Variablen global, andere wieder nicht. Wichtig ist, daß du dir Gedanken machen musst, wie aktuell die Daten darin sind - die "Lebenszeit" der Variablen spielt hier eine Rolle. Es hat nicht nur etwas mit Bequemlichkeit zu tun...

Toni
Grüßle Toni :)

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Re: Stilfrage : Globale Variablen
« Antwort #2 am: 04.04.08 - 16:21:05 »
naja die Lebenszeit ist schon eine weile gegeben, die variable gillt für rund 200 andere Dokumente und viele Funktionen, natürlich achte ich darauf, dass in den Variablen immer das richtige drin steht und keine Leichen
Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Stilfrage : Globale Variablen
« Antwort #3 am: 04.04.08 - 21:31:27 »
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.
« Letzte Änderung: 04.04.08 - 21:43:48 von Axel Janssen »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Stilfrage : Globale Variablen
« Antwort #4 am: 04.04.08 - 22:02:17 »
In JavaScript für Notes-Webanwendungen benutze ich sehr viel page-global.
Das heisst Variablen aus Feldern, anderen Dokumenten, Profildokumenten, etc. werden im html Header in JavaScript Variablen geschrieben, die für das gesamte Html-Dokument global sind. Da schreib ich aber später keine neuen Werte rein.
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Stilfrage : Globale Variablen
« Antwort #5 am: 04.04.08 - 22:57:39 »
Um hierzu etwas hilfreiches sagen zu könne,  fehlen noch viele Fakten.

Natürlich ist es möglich, bestimmte Daten bei Beginn einer Aktion nur einmal einzulesen und dann in globalen Variablen bereitzustellen. Hierzu kann man jedoch auch ein ProfileDocument verwenden (und eben entsprechend befüllen). Dies bleibt dann im Cache - das ist so hilfreich wie globale Variablen, und die ausführende Instanz bleibt ja ident genauso wie bei der Verwendung von globalen Variablen.

Beide Wege - globale Variable ebenso wie ProfileDocuments - können aber nur solange aktuell sein, wie *ein* bestimmter Prozess läuft. Und hier fehlen mir dann einfach Infos zu Deinen Anforderungen.

By the way: Wenn Du eine Ansicht mit 200 Serverdokumenten hast und diese dann auch in der gleichen Datenbank liegen, in der Dein Prozess läuft, dann werden auch da einige Zeit Zugriffe im Cache gehalten. Unter Umständen hast Du da sowieso nur sehr geringe Performance-relevante Probleme.

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz