
Jeśli chcesz wdrożyć w swojej aplikacji Dependency Injection, ta książka jest dla Ciebie.
Jeśli chcesz zgłębić temat Dependency Injection, ta książka jest dla Ciebie.
Jeśli nie wiesz jaki kontener Dependency Injection wybrać, ta książka jest dla Ciebie.
Jeśli nie słyszałeś wcześniej o Dependency Injection a chcesz wprowadzić do swojej aplikacji luźne powiązania między elementami systemu (eng. Loose coupling), ta książka jest dla Ciebie.
Jeśli nie interesują Cię dobre praktyki w programowaniu i nadal chcesz pisać kod byle jaki, ta książka nie jest dla Ciebie.
Dependency Injection in .NET Marka Seemanna to kompendium wiedzy na temat Dependency Injection na platformie .NET. Zawiera sporo teorii oraz tyle samo praktyki w postaci konkretnych przykładów i instrukcji użycia bibliotek-kontenerów.
Wstęp pokazuje przykład projektu, który powstaje bez wiedzy o DI i pokazuje jak źle można zaprojektować „luźne powiązania” oraz jak zrobić to prawidłowo i jaki sposób pomoże nam w tym DI. Oprócz przygotowania podstaw pod kolejne rozdziały dowiadujemy się jak w praktyce przygotować dobrą, rozszerzalną architekturę. Dalej autor wchodzi w świat DI opisując podstawowe założenia jakie muszą być spełnione przez kontenery (konfigurowanie i rozwiązywanie zależności oraz zarządzanie czasem życia obiektów). Z książki dowiemy co to jest Composition Root i dlaczego powinno to być jedyne miejsce gdzie łączymy ze sobą obiekty z abstrakcjami. Dowiemy się jakimi wzorcami dysponujemy przy wdrażaniu i projektowaniu kodu z uwzględnieniem DI (Constructor Injection, Property Injection, Method Injection oraz Ambient Contect) oraz jak wybrać właściwy. Poznamy też anty-wzorce, które założę się, że widujemy wszyscy, tylko wcześniej ich nie nazywaliśmy (Control Freak – gdy nadużywamy new) lub być może zauważymy je, gdy zaczniemy wprowadzać DI (Bastard Injection, Service Locator). Dowiemy się także jak radzić sobie z trudniejszymi przypadkami, na które możemy trafić podczas refactoringu (konstruktory o zbyt dużej liczbie parametrów). Dowiemy się także jakie są rodzaje cyklu życia obiektów i jak wybrać właściwy.
Sporą część książki zajmują przykłady praktyczne. Oprócz przewijającego się tematu rozszerzania kodu sklepu internetowego dowiemy się jak znaleźć Composition Root w różnych frameworkach (ASP.NET MVC, Web Forms, WPF, WCF, aplikacja konsolowa a nawet Power Shell) oraz jak konfigurować tam komponenty. Sporą część książki zajmuje sekcja DI Containers, gdzie autor opisuje najpopularniejsze biblioteki – kontenery Dependency Injection. Są to Castle Windsor, Structure Map, Sprint.NET, AutoFac, Unity oraz MEF (który do końca nie jest kontenerem DI, o czym też przeczytamy w książce).
Uncle Bob w Clean Code: A Handbook of Agile Software Craftsmanship wspominał o tym, że setup jest jednym z problemów w programowaniu aplikacji i pozwalając sobie na tworzenie instancji obiektów w różnych miejscach naszego kodu pozwalamy sobie na naruszenie Single Resposibility Principle. Konfigurowanie obiektów i zarządzanie ich czasem życia powinno być przeniesione do jednego wspólnego miejsca aplikacji. Mark Seemann uczy nas i pokazuje nam jak ten problem setupu w praktyce rozwiązać.
Dużym plusem książki jest to, że jest napisana prostym językiem, więc każdy programista, nawet nieobeznany z tematem DI będzie mógł sobie go bez problemu przyswoić. Zawiera też dużo odwołań – do innych książek oraz do postów na blogach. Jeśli więc nie będziecie znać jakiegoś wzorca, którym posłużył się autor to od razu będzie wiadomo gdzie nadrobić wiedzę.
Szczerze polecam. Po przeczytaniu tej książki dwa razy zastanowisz się zanim użyjesz słowa kluczowego new.