it-swarm-eu.dev

Welche Vorteile bietet die Verwendung von Abhängigkeitsinjektions- und IoC-Containern?

Ich habe vor, einen Vortrag über Abhängigkeitsinjektion und IoC-Container zu halten, und ich suche nach guten Argumenten für die Verwendung.

Was sind die wichtigsten Vorteile dieser Technik und dieser Werkzeuge?

67
Andy Lowry

Für mich ist es am wichtigsten, es einfach zu machen, dem Prinzip der Einzelverantwortung zu folgen.

DI/IoC macht es mir einfach, Abhängigkeiten zwischen Objekten zu verwalten. Dies erleichtert es mir wiederum, kohärente Funktionen in einen eigenen Vertrag (Schnittstelle) aufzuteilen. Infolgedessen wurde mein Code viel modularer, seit ich von DI/IoC erfahren habe.

Ein weiteres Ergebnis davon ist, dass ich mich viel leichter zu einem Design durchschauen kann, das das Open-Closed-Prinzip unterstützt. Dies ist eine der vertrauensinspirierendsten Techniken (nach automatisierten Tests an zweiter Stelle). Ich bezweifle, dass ich die Tugenden des Open-Closed-Prinzips genug vertreten kann.

DI/IoC ist eines der wenigen Dinge in meiner Programmierkarriere, die "Game Changer" waren. Es gibt eine riesig Qualitätslücke zwischen Code, den ich vor und nach dem Erlernen von DI/IoC geschrieben habe. Lassen Sie mich das noch etwas betonen. [~ # ~] enorme [~ # ~] Verbesserung der Codequalität.

48
quentin-starin

Die Beispiele, die mir wirklich die Augen geöffnet haben, haben gezeigt, wie es möglich war, die auf diese Weise erstellten Objekte einfach einem Unit-Test zu unterziehen. Zuvor hatte ich Probleme beim Versuch, Objekte für einen Komponententest zu isolieren. Ich schrieb oft Tests, um mit einem viel größeren System zu interagieren. Dies war sehr schwierig, da das gesamte System viel weniger vorhersehbar und anfälliger für Änderungen war als die einzelnen Komponenten.

9
Winston Ewert

Vorteile von Abhängigkeitsinjektionen sind:

  1. Ihr Code ist sauber und besser lesbar.
  2. Codes sind lose gekoppelt.
  3. Da die Implementierungen in der XML-Datei konfiguriert sind, können sie in einem anderen Kontext verwendet werden.
  4. Code kann mit verschiedenen Scheinimplementierungen leicht getestet werden.
4
Solaimani SA

Ich denke, die tatsächlichen Vorteile sind eher politischer als technischer Natur. DI ist einfach eine Alternative zum Muster Service Locator, nichts weiter. An sich macht es nicht einfacher, Prinzipien wie SRP oder OCP zu folgen oder Schichten zu entkoppeln. Andere Befragte hier verwirren unterschiedliche Konzepte und Techniken, IMO.

Sie können dieselben Ziele in Bezug auf hohe Kohäsion und niedrige Kopplung erreichen, indem Sie Service Locators verwenden oder Abhängigkeiten einfach direkt instanziieren, wann immer dies zutreffend ist (was meistens der Fall ist).

Jetzt weiß ich, dass viele dieser Meinung nicht zustimmen werden. Gerne diskutiere ich konkrete Beispiele.

2
Rogério