Dependency Injection – Notatka z nauki

przez | 6 lipca, 2021
Dependency Injection: https://www.pexels.com/photo/person-holding-a-fruit-with-an-injection-5863373/

W ramach rozwijania się oglądam i czytam różne materiały. Następnie wiedzę z nich umieszczam w Anki oraz w notatkach i uzupełniam własnymi przemyśleniami. Ostatnio zapoznałem się z materiałem: Dependency Injection – jak od zależności nie dostawać mdłości.

Notatka z materiału: Dependency Injection – jak od zależności nie dostawać mdłości:

Zanotowałem z tego materiału:

  • Dependency injection jest ostatnią zasadą SOLID, która jest z nich wszystkich najważniejsza, ponieważ pozwala zastosować pozostałe zasady.
  • Twórz wiele małych klas, które łatwo zrozumieć i przetestować.
  • Wstrzykiwanie zależności ułatwia pisanie testów automatycznych (jednostkowych i integracyjnych).
  • Dobrze jest wstrzykiwać zależności przez konstruktor i oddać odpowiedzialność tworzenia zależności (klas) innej klasie.
    • Lepsze jest tworzenie przez konstruktor, a nie gettery i settery.
    • Jeżeli zrobimy wstrzykiwanie przez konstruktor i nie zarejestrujemy zależności, to nasza klasa nie powstanie i szybko się o tym dowiemy.
    • Jeżeli zrobimy wstrzykiwanie przez gettery i settery i nie zarejestrujemy zależności, to nasza klasa powstanie i dowiemy się o tym może dopiero na produkcji.
    • Wyjątkiem wstrzykiwania przez gettery i settery jest wstrzykiwanie obiektów wykorzystywanych wszędzie (Logger, sesja bazodanowa). Jeżeli tego nie zarejestrujemy, to szybko się o tym dowiemy, bo nic nie będzie działało.
  • Wystarczą interfejsy do zbudowania ogólnego rozwiązania (założeń, algorytmu).
  • Sam nie implementuj wszystkich rozwiązań, poszukaj specjalistycznych bibliotek.
  • Service Locator jest antywzorcem.

Wszystkie posty związane z notatkami z nauki:

Źródła

Bestseller dnia w księgarni Złote Myśli

Obraz główny

Materiał: Dependency Injection – jak od zależności nie dostawać mdłości:

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *