170 похожих чатов

Кто может объяснить смысл дрочива с DI?

24 ответов

16 просмотров

di == interface \thread

зочем оно тебе понадобилось?

Shade- Автор вопроса
Вячеслав
зочем оно тебе понадобилось?

Архитекторы задрачиывают

лучше спросить в чате джавистов) они все подробно расскажут

Если говорить о практической пользе, то большой профит от di в юнит тестировании

Это про инжекцию зависимостей Типа если класс использует экземпляр другого класса то по принципам завешанным предками и лисковски надо создавать используемый объект вне использующего и внедрять в использующий, дабы не плодить лишних зависимостей В общем смысле это значит разделение использования и создания используемой сущности

Shade- Автор вопроса
Артём Лазаренко
Если говорить о практической пользе, то большой пр...

Это понятно. У меня вопрос скорее был об реализации. DI в виде интерфейса куда проще мокается чем неведомая хрень с рефлексией под капотом

Shade- Автор вопроса
Артём Лазаренко
Интерфейс же не во всех случаях подходит

А в каких не подходит? Мне кажется если не подходит интерфейс - то это ошибка скорее архитектуры

Shade- Автор вопроса
Oleksij Kyslytsja
Это про инжекцию зависимостей Типа если класс испо...

Ну в эту парадигму и сервис локатор укладывается. Один из вопросов как раз и был: почему он антипаттерн, а какая-то хрень с рефлексией - это типа гуд.

Shade
А в каких не подходит? Мне кажется если не подходи...

Интерфейс эт что, это некая абстракция над разными по своей сути классами, что б объединить в что-то общее, но зачем это в юнит тестировании? Получается ты создаёшь абстракцию ради абстракции, а это еще один антипаттерн soft code 😁

Shade
Ну в эту парадигму и сервис локатор укладывается. ...

Если ваши товарищи пишут что какая то одна реализация DI контейнера лучше другой, они скорее всего не достаточно глубоко разобрались в вопросе.

Артём Лазаренко
Интерфейс эт что, это некая абстракция над разными...

Где-то интерфейс подойдёт, но я б не назвал это уникальным способом

Shade- Автор вопроса
Артём Лазаренко
Интерфейс эт что, это некая абстракция над разными...

Как раз таки интерфейс изи мокается и в юнит-тестах go это как по мне самый паттерн

Shade- Автор вопроса
Shade
Я пришёл к такому же выводу. Спасибо

Дабы с ними не сраться, я бы предложил сесть командой, сделать табличку с разными реализациями и выписать все плюсы/минусы каждой. И потом уже обсудить результаты того что получится.

Shade- Автор вопроса
Anton Kucherov
Дабы с ними не сраться, я бы предложил сесть коман...

Уже в конфлюенсе все выписал. Осталось похоливарить 😂

Shade
Ну в эту парадигму и сервис локатор укладывается. ...

Имхо разница что одно уменьшает число сущностей, а второе наоборот

Shade- Автор вопроса
Oleksij Kyslytsja
Имхо разница что одно уменьшает число сущностей, а...

За счет чего уменьшается число сущностей? Я не вижу принципиальной разницы. У меня интерфейс может соответствовать сразу и фабрике и хранилищем конфигов, логгеров и синглтонов... Более того инициализированные синглтоны не будут болтаться в глобальной области, что для GC гуд. И все это добро я могу замокать и сделать тестирование изи... Скорее всего у меня непонимание православного DI и IoC которое все ж таки тащат за уши из других языков... Из ключевого и обще-приемлемого я вынес, что в некоторой единой точке сборки должны быть собраны все провайдеры всех используемых сущностей, и раздаваться должны инжекторами, последовательно собирающих провайдерами некоторые выходные сущности... Ок. Интерфейс с реализацией в отдельном пакете(-ах), некий метод конструктора реализации плюс фабричные методы...

Shade
За счет чего уменьшается число сущностей? Я не виж...

За счёт того, что ты не создаёшь объект в каждом месте использования, а создаёшь только в одном Плюс моки точно так же тянутся за уши, но никого это не смущает

Shade- Автор вопроса
Oleksij Kyslytsja
За счёт того, что ты не создаёшь объект в каждом м...

Я и не создаю в каждом месте, я либо юзаю метод из единого пакета, если все таки неймется запихнуть синглтон в глобальные переменные, либо предаю параметром, либо катаю через контекст - у меня руки не связаны... Моки это не паттерн, как их можно притягивать или не притягивать за уши, если это атрибут парадигмы юнит-тестирования?

Shade
Я и не создаю в каждом месте, я либо юзаю метод и...

Тогда DI вам как бы и не нужно, у вас и так оно используется

Shade- Автор вопроса
Oleksij Kyslytsja
Тогда DI вам как бы и не нужно, у вас и так оно ис...

)))) вот самое смешное я к тому же выводу пришел, единственное что я выпиливаю сейчас в легаси (а я пришел на проект, который исторически был на аутсерсе, когда-то) это растыканные сущности по другим объектам и переделываю передачу по параметру либо в методы, либо в конструкторы сущностей того что как общими усилиями выяснили и есть DI контейнер

Похожие вопросы

Обсуждают сегодня

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Открыл свой двухкилобайтный экзешник в x32dbg, а тут какая-то хрень. Смущает кнопка "выполнить до пользовательского кода", а что ещё может быть в файле помимо него ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
11
Мне были интересны дишные хаки и я нашёл любопытный способ на форуме через __traits, что-то вроде int delegate(int) fac = (int n) => n == 0 ? 1 : n * __traits(parent, {})(n - ...
Constantin F.
1
Всем привет, подскажите/посоветуйте пожалуйста. Фаердак компоненты, имею одно место где бизнес хочет видеть при открытии формы список всех клиентов, это порядка 30к. Мои дово...
Sasha Sch
14
Вопрос тем кто смотрит видео и слушает подкасты - как вы потом ищете нужную вам информацию? Вот статью я прочитал, потом могу искать нужную мне часть банальным поиском. Пропус...
Aleksandr Druzhinin
4
Ребят, если кто в курсе - скажите, а в загранке такое же засилье маркетплейсов? или там простые сермяжные интернет-магазины живут попроще?
Андрей [aharito] Харитонов
14
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
31
Карта сайта