Size: a a a

2021 March 31

ŹR

Źmićer Rubinštejn in pro.elixir
Впрочем, set_env если правильно сделать, а не через @user_loader Application.ge… будет иметь возможность менять в рантайме
источник

((

(fun () -> ()) in pro.elixir
=)
источник

T

Tharin in pro.elixir
Anastasiya Dyachenko
менять можно, но другой вопрос что менять реализацию в рантайме это странное решение
++ в рантайме рекомендую менять только данные
источник

T

Tharin in pro.elixir
По возможности
источник

((

(fun () -> ()) in pro.elixir
как типичный .Net разработчик мне такое и в голову не приходило
источник

A

Aleksey @cheatex in pro.elixir
Раз, тут пошло оживление спрошу еще раз. Кто помнит статью про технику разделения логики и процессов в духе эффектов и их обработчиков? Тут проплаывала пару месяцев назад и я потерял ссылку :(
источник

A ß in pro.elixir
про окамл?
источник

A

Aleksey @cheatex in pro.elixir
не не, конкретно про эликсир
источник

((

(fun () -> ()) in pro.elixir
о, тоже интересно
источник

ML

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

Например не хардкодить обращение к конкретному HTTP клиенту, не пытаться иметь Один Единый Http Клиент во всей экосистеме, а передавать ссылку.

Например, MFA
источник

V

V in pro.elixir
DI как вариант полиморфизма
источник

V

V in pro.elixir
ООП (мэйнстримовый) - про полиморфизм через наследование. В точку вызова подсовывается другой объект-исполнитель с методом с такой же сигнатурой.
В эликсире тоже можно подменять модуль-исполнитель, как показано здесь https://t.me/proelixir/182362, только читаемость кода падает.
источник

V

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

T

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

V

V in pro.elixir
Tharin
А может прийти к композиции
кто/что?
источник

T

Tharin in pro.elixir
V
кто/что?
"ООПшник приходит к мысли"
источник

V

V in pro.elixir
Это фигура речи. ООПшник никуда особо не ходит
источник

а

а это кто in pro.elixir
V
Это фигура речи. ООПшник никуда особо не ходит
Но к композиции прийти может
источник

V

V in pro.elixir
Как только ООПшник приходит к композиции - он начинает испускать из глаз особые лучи, другие ООПшники их видят, и начинают его кусать
источник

AD

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