dedlfix: $GLOBALS / Sicherheit / globale Variable

Beitrag lesen

Tach!

Ich finde schlecht wartbarer Code an sich ist gefährlich, alles was nicht eindeutig nachvollziehbar ist, ist schlecht verständlich, und das lässt wieder mehr Raum für Nachlässigkeit und damit für Fehler, was ausserdem die Zeit zum debuggen erhöht - ein Paradebeispiel ist hier alles was mit GLOBAL zu tun hat.

Gut, also mit anderen Worten, eine direkte Gefahr geht von $GLOBALS (und anderen globalen Variablen) nicht aus. Es sind aber die von mir angedeuteten anderen Gründe, warum man globalen Status meidet. Als da zum Beispiel wäre: Man sieht einer Funktion nicht an, dass sie anderswo Werte erwartet oder gar ändert, wenn man lediglich den Aufruf sieht. Es ist besser, alles was die Funktion benötigt, als Parameter zu übergeben und von ihr heraus keine eigenständigen Zugriffe zu unternehmen. Aus Sicht des globalen Wertes betrachtet, kann es jederzeit sein, dass der sich ändert, ohne dass man das sieht, wenn man nicht alle Aufrufe verfolgt.

Das Prinzip, Abhängigkeiten hineinzureichen, statt von drinnen auf irgendwas zuzugreifen, nennt sich Dependency Injection. Dazu gibt es auch Frameworks, die dabei helfen, Abhängigkeiten aufzulösen, doch das reine Prinzip kann man auch ohne ein solches im eigenen Code berücksichtigen.

dedlfix.