День 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, парочка опросов для вас ниже.
Post #1297
2.07K
- 👍 5