Im vergangenen Jahr habe ich ein neues System mit Dependency Injection und einem IOC-Container erstellt. Das hat mir viel über DI beigebracht!
Ich halte es jedoch auch nach dem Erlernen der Konzepte und Muster für eine Herausforderung, Code zu entkoppeln und einen IOC-Container in eine Legacy-Anwendung einzuführen. Die Anwendung ist so groß, dass eine echte Implementierung überwältigend wäre. Auch wenn der Wert verstanden und die Zeit gewährt wurde. Wer hat Zeit für so etwas?
Ziel ist es natürlich, Unit-Tests in die Geschäftslogik einzubinden!
Geschäftslogik, die mit testverhindernden Datenbankaufrufen verknüpft ist.
Ich habe die Artikel gelesen und verstehe die Gefahren von Poor Man's Dependency Injection, wie in diesem Artikel von Los Techies beschrieben . Ich verstehe, dass es nichts wirklich entkoppelt.
Ich verstehe, dass es viel systemweites Refactoring beinhalten kann, da Implementierungen neue Abhängigkeiten erfordern. Ich würde nicht in Betracht ziehen, es für ein neues Projekt mit beliebiger Größe zu verwenden.
Frage: Ist es in Ordnung, Poor Man's DI zu verwenden, um Testbarkeit in eine Legacy-Anwendung einzuführen und den Ball ins Rollen zu bringen?
Ist die Verwendung von Poor Man's DI als Basisansatz für echte Abhängigkeitsinjektion eine wertvolle Methode, um über die Notwendigkeit und den Nutzen des Prinzips zu informieren?
Können Sie eine Methode umgestalten, die eine Datenbankaufrufabhängigkeit und eine Zusammenfassung aufweist, die hinter einer Schnittstelle aufgerufen wird? Allein diese Abstraktion würde diese Methode testbar machen, da eine Scheinimplementierung über eine Konstruktorüberladung übergeben werden könnte.
Sobald die Bemühungen Befürworter gewinnen, könnte das Projekt aktualisiert werden, um einen IOC-Container zu implementieren, und die Konstrukteure, die die Abstraktionen aufnehmen, wären da draußen.
I consider it a challenge to decouple code and introduce an IOC container into a legacy application
natürlich ist es. Es heißt technische Schulden. Aus diesem Grund sind kleine und fortlaufende Refaktoren vor allen größeren Umbauten vorzuziehen. Die größten Konstruktionsfehler zu reduzieren und auf IoC umzusteigen, wäre weniger schwierig.