Aus meiner Sicht sprechen 2 Dinge gegen globale Variablen:
1) Sie sind im Konzept der
OOP nicht existent, und wäre dort (wenn in Reinform praktiziert) auch schlicht unbrauchbar.
2) Sie
müllen einem das Projekt voll, und zwar mit ihrem Namen. Wenn ich in Unit1 eine glob. Variable "x" habe, und Unit1 in die uses-Liste von Unit2 aufnehme, so ist "x" dort ebenso gültig. Die Folge ist, dass man z.B. in einer Funktion lokal "x" deklariert, und so lange man sich in dieser Funktion befindet, wird das lokale "x" genommen. Verwende ich das "x" aber an anderer Stelle und halte es aus Versehen für das eben genannte lokale "x", so wird mir der Compiler keinen Error ausspucken, sondern munter mit dem globalen "x" aus Unit1 kompilieren, und somit einen Fehler in der Logik herbeiführen, der dann u.U. nur schwer nachvollziehbar ist. Diese Problematik steigt und fällt natürlich mit der Komplexität eines Projektes, aber allein die Tatsache dass es eine selbst gebaute Fehlerquelle sein kann, disqualifiziert die globalen Variablen im Sinne einer sauberen Programmierung (
imho).
Ich muss jedoch zugeben, dass ich bei quick'n'dirty Mini-Mal-Eben-Programmen auch hier und da was global deklariere. Vornehmlich dann, wenn ich nur eine
Unit brauche - z.B. um schnell was zu testen. Ansonsten vermeide ich sie wo es geht.
Gruss,
Fabian
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel