Size: a a a

2021 March 31

AB

Alex Bubnov in pro.elixir
Dmitry Grach
Ну и в целом dependency injection нужен для решения проблемы создаваемой самим ООП.
Нет ООП - нет проблемы, не нужен injection
я считаю этот тезис очень зависимым от трактовки термина DI, потому что DI-движки в ООП-языках стали уже очень развесистыми.
какая-то часть их функциональности, конечно же, нужна.
источник

AB

Alex Bubnov in pro.elixir
V
DI как вариант полиморфизма
DI связан с полиморфизмом, конечно, но ни в коей мере не является его "вариантом"
источник

V

V in pro.elixir
Alex Bubnov
DI связан с полиморфизмом, конечно, но ни в коей мере не является его "вариантом"
а как правильно сказать?
источник

AB

Alex Bubnov in pro.elixir
V
а как правильно сказать?
паттерн dependency inversion основывается на полиморфизме.
dependency injection - это утилитарная механизация, автоматическая инстанциация и вайринг зависимостей поверх dependency inversion.
источник

АЮ

Андрей Юнми... in pro.elixir
V
Откуда вообще в ООП зависимости, что их необходимо инвертировать? Оттуда, что обычный ООП-стиль конструирования программ - это наинстанцировать объектов и засовывать их друг в друга. Отсюда высокая сложность чтения ООП-кода собранного на основе интерфейсов - нужно понимать, какая реализация засунута в эту зависимость, какая в эту. Бывают тяжёлые случаи, когда зависимости вычисляются на лету, и простым чтением понять невозможно, приходится код запускать и интроспектить. Рано или поздно ООПшник приходит к мысли, что лучше иметь по одной реализации на интерфейс. Но тогда чем это будет отличаться от чистых не привязанных к контексту функций с хардкодными зависимостями? Ничем. Эликсир-код проще читать чем ООП-лапшу.
В ООП вообще много "паттернов", потому что языки с этой парадигмой в основе исторически были не очень выразительными. Тот же Dependency Injection в фп часто делается передачей функции или имени модуля без создания новых объектов.
источник

АЮ

Андрей Юнми... in pro.elixir
источник

АЮ

Андрей Юнми... in pro.elixir
Я же правильно понимаю, что в экто нет возможности напрямую сделать INSERT INTO table (...) SELECT ...? Только склейкой строк и запихиванием Ecto.Repo.query/2?
источник

АЮ

Андрей Юнми... in pro.elixir
Alex Bubnov
паттерн dependency inversion основывается на полиморфизме.
dependency injection - это утилитарная механизация, автоматическая инстанциация и вайринг зависимостей поверх dependency inversion.
Я думал, Dependency Inversion основывается на отделении эффектов от чистых вычислений. Или это другой dependency inversion (потому что я хз, где там полиморфизм)?
источник

AB

Alex Bubnov in pro.elixir
Андрей Юнми
Я думал, Dependency Inversion основывается на отделении эффектов от чистых вычислений. Или это другой dependency inversion (потому что я хз, где там полиморфизм)?
мне всегда казалось, что d. inversion - это когда ты интерфейс для отправки почты декларируешь на уровне бизнесового кода, а реализации предоставляешь в него снаружи.
есои говорить в терминах чистоты/эффектов, выходит примерно то же самое, только вместо интерфейса - совместимость эффекта.
источник

LL

Lama Lover in pro.elixir
Alex Bubnov
паттерн dependency inversion основывается на полиморфизме.
dependency injection - это утилитарная механизация, автоматическая инстанциация и вайринг зависимостей поверх dependency inversion.
А как это по-русски переводится?
источник

AB

Alex Bubnov in pro.elixir
Lama Lover
А как это по-русски переводится?
что именно из "этого"?
источник

LL

Lama Lover in pro.elixir
Alex Bubnov
паттерн dependency inversion основывается на полиморфизме.
dependency injection - это утилитарная механизация, автоматическая инстанциация и вайринг зависимостей поверх dependency inversion.
> это утилитарная механизация, автоматическая инстанциация и вайринг зависимостей поверх dependency inversion.
источник

AB

Alex Bubnov in pro.elixir
Lama Lover
> это утилитарная механизация, автоматическая инстанциация и вайринг зависимостей поверх dependency inversion.
это всё тупые кальки с английского, в чем проблема?
я не очень в курсе русскоязычной терминологии
источник

АЮ

Андрей Юнми... in pro.elixir
Alex Bubnov
мне всегда казалось, что d. inversion - это когда ты интерфейс для отправки почты декларируешь на уровне бизнесового кода, а реализации предоставляешь в него снаружи.
есои говорить в терминах чистоты/эффектов, выходит примерно то же самое, только вместо интерфейса - совместимость эффекта.
А, сори, я попутал с dependency rejection.
источник

((

(fun () -> ()) in pro.elixir
Андрей Юнми
Я думал, Dependency Inversion основывается на отделении эффектов от чистых вычислений. Или это другой dependency inversion (потому что я хз, где там полиморфизм)?
это вообще не то)) dependency inversion - инвертирование зависимости, если раньше модуль А использовал модуль Б напрямую, то теперь модуль А объявляет контракт (interface) и использует его, а кто его реализует ему всё равно. Вот и получает инверсия, раньше модуль А зависел от модуля Б, а теперь модуль Б зависит от контракта которым ему дал модуль А.
источник

V

V in pro.elixir
Точно
источник

LL

Lama Lover in pro.elixir
Alex Bubnov
это всё тупые кальки с английского, в чем проблема?
я не очень в курсе русскоязычной терминологии
Проблема в том, что я не понимаю что значат эти слова
Объясни, пожалуйста
источник

V

V in pro.elixir
Осталось только понять, зачем это всё
источник

((

(fun () -> ()) in pro.elixir
что бы подменить зависимости
источник

((

(fun () -> ()) in pro.elixir
идея на бумаге хороша, а вот на практике не очень
источник