Dependency Injection und Code-Wartbarkeit

8

Ich arbeite an einem (vb.net/asp.net) -Projekt, das Schnittstellen verwendet, um Abhängigkeitsinjektionen bereitzustellen. Aber für mich fühlt es sich an, als wäre die Wartbarkeit des Codes umgebracht worden. Wenn ich den Code durchlesen möchte, kann ich nicht einfach zum Code einer verwandten Klasse springen, die verwendet wird. Alles, was ich sehe, sind die Schnittstellen, und so muss ich durch das Projekt jagen, um herauszufinden, welche Klassen die Implementierung machen. Das tut meiner Produktivität wirklich weh.

Ja, ich weiß, dass ich jetzt die Schnittstellen mit einer Vielzahl von Ersatzklassen implementieren kann. Aber zum Beispiel weiß ich, dass ich meine Datenquelle nicht in absehbarer Zeit ändern werde - ich brauche es nicht, dass ich die Möglichkeit habe, diese Daten auszutauschen. All diese Abhängigkeitsinjektion scheint für mich zu übertrieben zu sein (tatsächlich ist der einzige wirkliche Grund, warum es dort ist, Scheinklassen für Komponententests zu unterstützen). Ich habe tatsächlich mehrere Orte gelesen, wo State DI eigentlich besser für Wartbarkeit ist. Aber das setzt voraus, dass Sie bereits wissen, wo alles ist und Sie wissen, welche Klasse Sie aktualisieren müssen. Herauszufinden, wo ich suchen muss, ist der Teil, der mich umbringt.

Meine Frage ist also: Gibt es einen besseren Weg, den Code zu durchlaufen? Gibt es einen besseren Weg, den Code wartbarer zu machen? Machen wir es nur falsch? Oder ist das Par für den Kurs?

    
JLX 30.10.2010, 05:09
quelle

2 Antworten

5

Es gibt definitiv einen Overhead für DI, besonders wenn Ihre Konfiguration von Ihrem Code getrennt ist. Obwohl dies für den Kurs ist, wird es im Laufe der Zeit einfacher, mit Ihnen umzugehen, und Sie können den Code besser verstehen.

Allerdings ist das Tooling, das Ihnen helfen kann. Schauen Sie sich Resharper oder CodeRush . Beide bieten hervorragende Verbesserungen für die Code-Navigation in Visual Studio. Resharper hat ausgezeichnete "Gehe zu Symbol" oder "Go To Implementation " Methoden, mit denen Sie schnell zur Implementierung Ihrer Schnittstelle navigieren können, wo auch immer sie sich befindet.

Auf den Punkt über Wartbarkeit: Im Allgemeinen wird ein lose gekoppeltes Design mit der Zeit wichtiger, weil wird geändert werden. Je enger der Code ist, desto schwieriger ist es, kleine Änderungen vorzunehmen, ohne die gesamte Anwendung zu beeinträchtigen. Dies ist, wo abhängig von Schnittstellen sehr sehr wichtig ist - , ob Sie Dependency Injection verwenden oder nicht.

    
Nader Shirazie 30.10.2010 05:46
quelle
4

Wartbarkeit sind viele verschiedene Dinge. Insgesamt geht es um den Grad, in dem Sie eine Anwendung weiterentwickeln können , indem Sie neue Funktionen hinzufügen.

Ja, es kann schwieriger werden, zu verstehen, wie Mitarbeiter miteinander verbunden sind, so dass der Aspekt der Wartbarkeit leiden kann durch die Einführung loser Kopplung.

Sobald Sie jedoch herausgefunden haben, wie die Codebasis funktioniert, sollten Sie besser hinzufügen können neue Funktionen ohne zu verlangsamen. In diesem Sinne ist Wartbarkeit viel verbessert durch lose Kopplung.

Es ist jedoch keine Wunderwaffe. Lose Kopplung ist eine Voraussetzung für wartbaren Code, keine Garantie.

    
Mark Seemann 01.11.2010 09:23
quelle