Deus Figendi: Globale Variablen vs. Parameter-Übergabe vs. neu ermitteln

Beitrag lesen

Guten Abend,
ich habe eine recht grundsätzliche Frage dazu, wie ich bestimmte Werte in eine Funktion hinein kriege.
In meinem Fall geht es um ein recht lineares TCL-Script (naja ein paar Schleifen sind drin aber...).
Ich habe einige Variablen, die direkt von anderen abhängen ums mal einfach zu schreiben:
Wenn $X == 1 dann $Y:='a'; $Z:='b';
Wenn $X == 2 dann $Y:='c'; $Z:='d';
Wenn $X == 3 dann $Y:='e'; $Z:='f';
(denkt euch Klammern oder "begin end" oder was auch immer einfach)
Diese Zuweisung ändert sich über die gesamte Laufzeit des Programms nicht, sie wird recht früh ermittelt ($X ist btw. ein vom Nutzer übergebener Parameter) und bleibt dann immer gleich.
Nun brauche ich die Werte von Y und Z in einer Funktion und Funktionen haben die Angewohnheit in ihrem eigenen kleinen Sandkasten zu spielen, sprich ich komme an Y und Z so erstmal nicht dran.
Nun sehe ich ein paar Möglichkeiten die Dinger in die Funktion zu bringen.
Eine Variante: globale Variablen:
Funktion meineFunktion ()
 mach mir Y global
 mach mir Z global
 /* Arbeite was mit Y und Z
Ende Funktion

oder Parameter übergeben:
Funktion meineFunktion (Y Z)
 /* Arbeite was mit Y und Z */
Ende Funktion

oder eines von beiden oben und die Berechnung von Y und Z in der Funktion erledigen:
Funktion meineFunktion (X)
 Wenn $X == 1 dann $Y:='a'; $Z:='b';
 Wenn $X == 2 dann $Y:='c'; $Z:='d';
 Wenn $X == 3 dann $Y:='e'; $Z:='f';
 /* Arbeite was mit Y und Z */
Ende Funktion

Außerdem wären so Varianten möglich wie ein Gesamt-Array zu erstellen anstatt mit drei Variablen zu arbeiten, z.B. so:
Array:
Key val val
[1] 'a';'b'
[2] 'c';'d'
[3] 'e';'f'
aber auch dann stellt sich die Frage: Globalisieren oder übergeben.
(Vorteil ist, dass die Werte nicht berechnet/ermittelt werden müssen, sondern einfach festgelegt werden. Nachteil ist natürlich dass da jede Menge Daten im Array sind, die ich für die Laufzeit nicht brauche, dennoch aber Speicher belegen.)

Welches ist die sinnvollste (performanteste/geschickteste/stylishste/sauberste/whatever) Methode?

--
sh:( fo:| ch:? rl:( br:& n4:& ie:{ mo:} va:) de:µ_de:] zu:) fl:( ss:| ls:[ js:(