pktm+2008-04-01 19:17:24--Allerdings wird die Sache immernoch über eine Paketvariable realisiert. Was wäre besser? Und vor allem warum?
Naja das kommt drauf an, der Scope einer lexikalische Variable kann maximal die Datei sein inder sie steht. Wenn man also verhindern will dass eine Klassenvariable von außen manipuliert wird, steckt man sie in eine lexikalische.
Der Grund könnte sein, dass man den Usern nicht vertraut oder dass es im Entwicklungsprozess später irgendwelche Änderungen an der Variable geben könnte und du müsstest qualvoll alle stellen in allen Dateien raussuchen wo die Variable direkt manipuliert wurde.
Hast du aber getter und setter Methoden für diese Variable , kannst du viel relaxter mit Änderungen umgehen, weil du die Methoden einfach dahingehend erweiterst, dass sie trotz altem Aufruf die Variable auf neue Werte setzen.
Wurden die Variablen lexikalisch definiert, kannst du dir selbst vertrauen, dass du IMMER die Mutatoren benutzt hast, du kannst dich nicht selbst (aus Eile/Faulheit/...) bescheißen.
Beispiel: du hast $DEBUG=0 oder 1 für nein und ja.
Später entscheidest du dich lieber die Zustände "on", "off", "partial" , "devel" und "wasweißich" einzutragen. Statt jetzt alle $MODUL::DEBUG=0 Aufrufe rauszusuchen, änderst du einfach das Verhalten von setDebug() dahingehend bei 0 "off" einzutragen.
Hinkt vielleicht, aber konnte ichs einigermaßen verständlich rüberbringen?
TMTOWTDYOG (there's more than one way to dig your own grave)