Ich mache normalerweise nur Anwendungen für mich als Hobby. Es scheint, dass DI-Frameworks eine große Dynamik in der Community haben, also dachte ich, ich sollte es vielleicht lernen, um meine Programmierkenntnisse zu verbessern. Soweit ich weiß, scheint es mehr auf große Projekte ausgerichtet zu sein. Ist es immer noch eine gute Idee, es zum Beispiel in einem 5k Zeilen Projekt zu verwenden?
Ich benutze DI für den gesamten Code, den ich schreibe, egal welche Größe.
Sie sollten jedoch beachten, dass DI keinen DI-Container erfordert . Ein DI-Container hilft sicherlich (besonders bei großen Projekten), aber man kann auch container schreiben -agnostischer Code mit DI-Prinzipien.
Die Größe der Codebasis ist nicht wirklich wichtig. Was zählt, ist Wartbarkeit . DI ermöglicht eine lose Kopplung , die wiederum die Wartbarkeit ermöglicht. Für alle außer einmaligen, wegwerfenden Projekten ist das wertvoll.
Ja, vorausgesetzt, Sie würden sich freuen, wenn Sie Ihre 5k bis 20k Linienprojekte in 3k bis 10k Linienprojekte umwandeln.
Ja, vorausgesetzt, Sie möchten beim Testen eines größeren Teils Ihrer Codebasis weniger Testcode schreiben.
Ja, vorausgesetzt, Sie möchten beurteilen, ob DI Ihnen helfen würde, ein besserer Programmierer zu sein.
Wenn Sie keine Abhängigkeitsinjektion verwenden, ist es fast sicher, dass Sie kein spöttisches Framework für Ihre Komponententests verwenden oder gar keine Komponententests durchführen. Einer der Vorteile von Komponententests besteht darin, dass Sie letztendlich bessere Entwurfsmuster verwenden, einschließlich der Abhängigkeitsinjektion. Wenn Sie es nicht tun, werden Sie es sehr schwer finden, Ihren Code zu testen.
Ob die Verwendung von DI-Rahmen für Anwendungen Ihrer Größe erforderlich ist oder nicht, ist eine offene Frage. Hinzufügen von externem Code zu Ihrem Projekt wird einige Komplikationen hinzufügen und, ehrlich gesagt, ich habe es noch nicht überzeugend genug für meine Projekte gefunden - noch nicht. Gleichzeitig habe ich an einem Punkt alle meine Mock-Objekte per Hand erstellt und seit ich zu RhinoMocks gewechselt habe, habe ich selten Hand-Mock-Objekte und fühle, dass sich meine Produktivität verbessert hat. DI-Container sind die nächste Technologie auf meiner Liste von Dingen, die es zu erkunden gilt, aber ich habe noch kein Projekt, um es noch einmal auszuprobieren.
Mein Vorschlag, da Sie offen dafür zu sein scheinen, wäre, ein paar DI-Frameworks zu testen und zu sehen, wie gut sie für Sie arbeiten. Wenn Sie nicht genug Wert finden, dann versuchen Sie es mit manueller Injektion - vorausgesetzt, Sie sind nicht an diesem Punkt, wenn Sie sind, dann gehen Sie zurück zu ihm.
Effektiv bewirkt die Dependency Injection (DI) einen gewissen "Komplexitätsaufwand" (sowie einen relativ geringen Overhead), der sich bei kleineren Projekten nicht zu lohnen scheint. Es gibt jedoch viele direkte und indirekte Vorteile, wenn Sie mit DI vertraut sind und es gegebenenfalls verwenden. Insbesondere:
Mehr direkt
Indirekt
Als Ergebnis können Sie feststellen, dass die Vertrautheit mit DI und den damit verbundenen Konzepten und Mustern dazu beiträgt, das Projekt mit mehr Abstraktionen, weniger "harten" Abhängigkeitspunkten und generell zu strukturieren, auch wenn DI in einem bestimmten Projekt oder Teilen davon nicht verwendet wird klarere, selbstdokumentierende Objektmodelle.
Tags und Links language-agnostic dependency-injection