Quantcast
Channel: TYPO3.system-testen.de » Qualität
Viewing all articles
Browse latest Browse all 2

Mehr Code Qualität durch Dependency Injection in TYPO3 ExtBase / FLOW3

$
0
0

Lässt sich die Code Qualität mit Dependency Injection verbessern? Ich höre oft die Frage, warum man so umständlich Objekte zugänglich machen soll, wo sich doch ein Objekt einfach mit „new“ bzw. einer klassischen ObjectFactory erzeugen lässt?! Vorab: Ja, Dependency Injection erhöht die Qualität und auch die Benutzbarkeit von Software. Doch…

Beispiel: Dependency Injection in FLOW3

Beispiel: Dependency Injection in FLOW3

Was ist Dependency Injection?

Dependency Injection ist ein Programmierparadigma, mit welchem man Objekte vom Framework injizieren lässt. Über eine separate Methode (ExtBase) oder eine Property-Annotation (FLOW3) kann dem Framework gesagt werden, dass ein Objekt eines bestimmten Types gebraucht wird. Das Objekt wird nicht mehr explizit über die ObjectFactory erstellt, sondern nur noch „angefragt“ und implizit vom Framework bereitgestellt. Die ObjectFactory verfährt auf die Art & Weise mit allen Objekten!

In der Programmierung spricht man von einer Losen Kopplung bzw. Kohäsion. Die Programmier-Einheit (das Objekt oder das Package/Extension) sollte möglichst exakt eine logische Aufgabe erfüllen. Mittels der Dependency Injection stellen wir eine „losere“ Kopplung zu den externen Objekten her. Des Weiteren kann man mittels DI von einem mächtigen Paradigma der Objekt Orientierten Programmierung Gebrauch machen: Polymorphismus. Polymorphismus beschreibt die Vielseitigkeit von Objekten. Das meist genannte Beispiel ist das eines Loggers. Fragt man z.B. als Objekt einen Logger (Allgemein) per DI an, so kann das Framework eine beliebige Logger-Implementierung liefern (Speziell). Ob das Objekt dann in eine Datei oder in eine E-Mail loggt, ist die Entscheidung des Frameworks und dessen Konfiguration und nicht die des Programmierers.

Mehr Qualität

DI trägt somit für eine lose Kopplung bei, nimmt einem Entscheidungen ab und sorgt somit dafür das eine Kohäsion herrscht. Somit ist das Arbeiten mit Frameworks wie TYPO3 wichtig alle Objekte über die ObjectFactory zu erzeugen und Dependency Injection zu benutzen, wo es Sinn macht. Sinn macht es fast immer! Jedoch sollte bedacht werden, dass wenn man z.B. einen Controller mit zwei Actions hat, in dem die Aufrufverteilung in den Actions 1000:1 ist, dass evtl. 1000x ein nicht benötigtes Objekt instanziiert wird.

Ausblick

Mit ExtBase hat das Programmierkonstrukt DI Einzug in TYPO3 gehalten. Hier muss eine separate „inject“-Methode erstellt werden, welche das Objekt entgegen nimmt. FLOW3 bedient sich einem ausgeklügelten Reflection-Cache, sodass hier eine JavaDoc Annotation an der Property ausreicht. Des Weiteren gibt es noch Konstruktur- und Setter-Injection (weiter Informationen auf flow3.typo3.org).

Bei Fragen zu diesem Paradigma, nehmen Sie gerne Kontakt auf.


Viewing all articles
Browse latest Browse all 2

Latest Images

Trending Articles





Latest Images