TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.74K subscribers
Post #1297 2.07K
День 1057. #Книги
Наконец осилил 600-страничную книгу «Внедрение зависимостей на платформе .NET» (Симан, ван Дерсен, 2-е издание. — СПб.: Питер, 2021).

Что? 600 страниц про внедрение зависимостей? Да! Более того, я смело ставлю её в ряд «мастрид» не только для .NET, но и для всех ООП разработчиков. Туда вот, рядом с Рихтером и «Совершенным кодом».

Вы купили одну книгу, а получили три: потрясающее введение в DI на .NET, отличный курс по основам ООП и уникальную книгу по дизайну ПО.
— Миккель Арентефт, Danske Bank

От многих опытных программистов можно услышать, что главная буква в SOLID – буква D. И эта книга в подробностях описывает, почему. Эта книга - в первую очередь отличное руководство по написанию лучшего программного обеспечения. Это достигается за счёт сосредоточения внимания на важности управления зависимостями, и поэтому она охватывает различные подходы к этому, в первую очередь DI.

Все мы знаем, что хорошо, когда код слабо связан, что объекты верхнего уровня не должны зависеть от объектов более низких уровней, а должны зависеть от абстракций, вот это всё. Однако 99% нашего опыта по внедрению зависимостей заключается в выделении интерфейса, внедрении его – в лучшем случае через конструктор - и регистрации зависимости в контейнере DI. Так вот, до контейнеров в книге дело доходит только в последней четверти книги.

В первых трёх четвертях на реальных практических примерах разбирается предназначение всех принципов SOLID и множества паттернов проектирования (декоратор, предохранитель, адаптер, компоновщик и т.д.). Их теоретические определения тоже приводятся (после подробного обоснования, зачем оно тут вообще надо), так что не переживайте. Также рассматриваются популярные антипаттерны, такие как «Диктатор», «Локатор сервисов», «Окружающий контекст» и «Ограниченная конструкция». Описываются проблемные подходы («запахи кода»), вроде избыточного внедрения через конструктор, зацикленных зависимостей и внедрения абстрактных фабрик. А, главное, почему они проблемные. Вводится понятие корня композиции (места, где собирается граф объектов, выполняющих всю работу в приложении, и где должны разрешаться все зависимости). Объясняется, в чём различия во времени жизни зависимостей. И многое, многое, многое другое.

И только после этого дело доходит до контейнеров DI, начиная с написания собственного примитивного контейнера, а потом рассказа о трёх популярных контейнерах: Autofac, Simple Injector и встроенном в .NET Core Microsoft.Extensions.DependencyInjection.

В общем, как написал выше, книга обязательна к прочтению всем.

Эта книга – настоящий шедевр. Удивительная и фундаментальная, она нужна каждому разработчику ПО, который хочет написать надёжный и правильный код.
— Эмануэле Ориджи, Funambol

Одно замечание. В книге очень много примеров про еду, поэтому не рекомендую читать её на пустой желудок.

Ну а поскольку в конце описывались DI контейнеры, и авторы горячо хейтили встроенный MS.DI, парочка опросов для вас ниже.
  • 👍 5
More from @netdeveloperdiary
  1. Sep 26, 2026День 2796. #ЗаметкиНаПолях #AI Рабочий процесс с Copilot для .NET. Продолжение Начало Три…
  2. Sep 25, 2026День 2795. #ЗаметкиНаПолях #AI Рабочий процесс с Copilot для .NET. Начало Проблема с позиц…
  3. Sep 24, 2026День 2794. #Оффтоп #Здоровье Сегодня будет необычный пост. Завтра в Москве стартует конфер…
  4. Sep 23, 2026День 2793. #ЗаметкиНаПолях #SQL 10 Редких Возможностей SQL, Которые Стоит Знать Каждому. Ч…
  5. Sep 22, 2026День 2792. #ЗаметкиНаПолях #SQL 10 Редких Возможностей SQL, Которые Стоит Знать Каждому. Ч…
  6. Sep 21, 2026🔍Тестовое собеседование с Senior C# разработчиком уже завтра 22 сентября(уже завтра!) в 1…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →