Andreas Korthaus: globalen Variablen / Kapselung von Funktionalitäten

Beitrag lesen

Hallo!

Verwende so wenige wie möglich - und nur so viele wie notwendig.
Möglichst viele Deiner Funktionen sollten ohne globale Variablen auskommen.

neugierig guck -> Warum eigentlich?

Bei kleinen Scripten ist das relativ egal, das ist ja eigentlich die Stärke von PHP dass man recht schnell ohne großartige Porgrammierkenntnisse was auf die Beine stellen kann. Aber eben diese Eigenschaft kehrt sich in größeren Projekten um in einen großen Nachteil. Je größer ein Projekt, desto schwieriger wird es den Überblick zu behalten, wenn man seine Funktionalitäten nicht vernünftig vom Rest des Programms abkapselt, dann werden Änderungen immer schwieriger, und vor allem haben Änderungen in diesem Fall oft Auswirkungen auf andere Programmteile, an die man dann möglicherweise nicht denkt, und irgendwann tauschen komische Fehler auf die sehr schwer zu finden sind.

Wenn eine Funktion/Methode eine feste Schnittstelle hat, also seine Daten nur über Parameter bekommt, und einen genau definierten Rückgabewert hat, kannst Du wer weiß was für akrobatische Änderungen in der Funktion vornehmen, was aber keinerlei Auswirkungen auf den Rest des Projektes hat. Der übrige Teil des Programms kennt nur die Schnittstelle, weiß aber nicht was unter der Haube passiert. Genauso kannst Du anders herum Teile des Programms ändern, die die Funktion verwenden, Du kannst Variablen umbenennen, oder anders organisieren... ohne dass dies Auswirkungen auf irgendwelche Funktionen hat, weil die ja über feste Schnittstellen angesprochen werden.

Wenn Funktionen sich allerdings auf alle möglichen anderen Teile des Programms verlassen, musst die alle diese Funktionen entsprechend ändern wenn Du irgendwas an diesen Teilen ändern willst. Und wenn Du das ein halbes Jahr später machst wird es langsam schwierig sich noch an alle Verknüpfungen zu erinnern, genaus ist es schwierig für andere Programmierer die später mal neu dazu kommen.
Und auch wenn Du neue Funktionalitäten implementierst läufst Du ständig Gefahr irgendwelche Voraussetzungen für andere Funktionen zu verändern...

So entstehen ohne Ende unnötige Seiteneffekte, die sich möglicherweise erst viel später in einer ungünstigen Konstellation auswirken...

Grüße
Andreas