it-swarm-eu.dev

Jaké jsou výhody používání Dependency Injection a IoC Containers?

Plánuji si promluvit o Dependency Injection a IoC Containers a hledám nějaké dobré argumenty pro jeho použití.

Jaké jsou nejdůležitější výhody používání této techniky a těchto nástrojů?

67
Andy Lowry

Nejdůležitější je pro mě snadnější řídit se zásada jednotné odpovědnosti .

DI/IoC mi usnadňuje správu závislostí mezi objekty. To mi zase usnadňuje přerušení koherentní funkčnosti do vlastní smlouvy (rozhraní). V důsledku toho byl můj kód mnohem modularizován, protože jsem se dozvěděl o DI/IoC.

Dalším výsledkem je to, že mnohem snáze vidím cestu k návrhu, který podporuje princip otevřeného uzavření . Toto je jedna z technik, které nejvíce inspirují důvěru (druhá pouze k automatizovanému testování). Pochybuji, že bych se mohl dostatečně spolehnout na ctnosti otevřeného principu.

DI/IoC je jednou z mála věcí v mé programovací kariéře, která byla „měničem her“. Mezi kódem, který jsem napsal před a po učení DI/IoC, existuje mezera v kvalitě obrovská Dovolte mi to ještě zdůraznit. [~ # ~] obrovské [~ # ~] zlepšení kvality kódu.

48
quentin-starin

Příklady, které mi opravdu otevřely oči, viděly, jak to umožnilo snadno testovat objekty vytvořené tímto způsobem. Předtím jsem měl potíže s pokusem izolovat objekty pro test jednotky. Často jsem psal testy, abych pracoval s mnohem větším systémem. Bylo to opravdu těžké, protože systém jako celek byl mnohem méně předvídatelný a mnohem náchylnější ke změně než jednotlivé komponenty.

9
Winston Ewert

Výhody injekcí závislosti jsou:

  1. Váš kód je čistý a čitelnější.
  2. Kódy jsou volně spojené.
  3. Protože jsou implementace konfigurovány v souboru XML, lze je znovu použít, lze je použít v jiném kontextu.
  4. Kód lze snadno otestovat pomocí různých falešných implementací.
4
Solaimani SA

Myslím, že skutečné výhody jsou více politické než technické. DI je prostě alternativa k vzoru Locator, nic víc. Samo o sobě to nezjednoduší dodržování principů jako SRP nebo OCP nebo oddělení vrstev. Ostatní respondenti zde zaměňují různé koncepty a techniky, IMO.

Stejných cílů lze dosáhnout s ohledem na vysokou soudržnost a nízké propojení pomocí vyhledávačů služeb nebo jednoduše okamžitým závislostem, kdykoli je to možné (což je většinou).

Teď vím, že mnozí budou s tímto názorem nesouhlasit. Budu ráda probrat konkrétní příklady.

2
Rogério