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

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

24 ответов

27 просмотров

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 контейнер

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта