Shub
DI позволяет мне безболезненно этот инвариант проверить
Ayrat
А чо не на фарше?
потому что это уже проект Walmart
Roman
разумеется устал, у тебя ответов нету же. и это закономерно. DI появился не на ровном месте и появился именно как ответ на такие вопросы
сорян, но устал пушто ты несешь какую-то хуйню. "Какие зависимости у твоих зависимостией" спросил чувак, который топит за DI
Doge
Мне кажется или вы спорите о разном? То есть тут вопрос в том, что если делаем интеграционные тесты, то да, нужно поднимать граф зависимостей. И да, DI позволяет это легче сделать. Если юнит - то нет.
Vasily
потому что это уже проект Walmart
Мне тебя будет не хватать
Shub
динамическое разрешение зависимостей, время жизни зависимостей, область видимости зависимостей
Romɑn
как? ))
ответ-то будет?
Vasily
В целом, если я правильно понимаю @eglyph , то набор функций должен мапиться на некий контекст, который идёт последним
Vasily
Тогда вообще пох
Shub
ну вообще-то даже этого не должно быть, т.к. часто мы не имеем контроля за созданием
Romɑn
Созданием чего?
stream<'soznanie>
Vasily
stream<'soznanie>
Падажжы,ебана
Doge
динамическое разрешение зависимостей, время жизни зависимостей, область видимости зависимостей
Да, вопросы с динамикой решает именно DI и это не сэмулируешь без сильной боли Но я правда редко видел прям сильно динамические конфигурации di. А вот время жизни и в ФП норм решается через тот же ReaderT и т.п.
Vasily
В целом любую подобную операцию можно рассматривать как набор действий, которые процессятся в определенном контексте
Vasily
Типа получи аккаунт, измени баланс, сохрани
Roman
Как? еще раз
у меня как-то ушло часа 2, чтобы добиться пояснений к очередному категоричному утверждению. Не считая предыдущий дней, когда я ответа не дождался в принципе)
Vasily
Поэтому действительно можно упростить
Vasily
И не вязать логику на контекст исполнения
Doge
ну я ждал, пока ты упомянешь ReaderT
Ну он тоже не панацея, это да. Но для небольших проектов (десятки тысяч строк кода) на удивление хорошо работает. Я когда первый раз попробовал сам удивился.
Shub
Как? еще раз
путем инжектирования зависимости, кидающей исключение при создании, например. время жизни контролирует DI в общем-то
Shub
попробуй выкинуть исключение при создании функции
Vasily
Тогда функции формируют набор абстрактных экшнов, которые понятия не имеют о контексте исполнения
Shub
он-то передает уже готовый объект
Romɑn
test (fun mockFun)
Shub
test (fun mockFun)
не скомпилится
Romɑn
test (fun mockFun)
где исключение? И главное зачем?
Doge
Pcj?
r/programmingcirclejerk
Vasily
Я просто пытаюсь в луковую архитектуру
Shub
условно
ну тогда получается, что ваши зависимости создаются всегда и везде, даже если это и не требуется
Vasily
Кстати
Shub
плюс вы не даете договорить
Shub
вот пресловутый ASP.NET
Shub
вы можете насовать в конструктор сколько угодно зависимостей
Romɑn
ну тогда получается, что ваши зависимости создаются всегда и везде, даже если это и не требуется
Причем тут это если ты с помощью DI собирался тестить время жизни ф-ции
Vasily
@atsapura , глянь thirteen ways of looking at turtle
Shub
но ASP понятия о них не имеет вообще,оно или возьмет конструктор по умолчанию или вообще откажется собирать дерево ваших контроллеров
Roman
@atsapura , глянь thirteen ways of looking at turtle
смотрел и как-то даже пробовал фримонаду. Мне влашин на стековерфлоу сказал "Остыньте Ленский, то была шутка"
Vasily
Фримонаду не надо
Romɑn
вы можете насовать в конструктор сколько угодно зависимостей
У тебя гораздо больше опыт и все такое, но пожалкйста снизойди до тех у кого нет таких больших проектов и обхясни так как будто они малыши, а ты воспитатель
Roman
Фримонаду не надо
интерпретатор?
Vasily
Тебе надо формировать набор команд на каждую операцию
Shub
ну сложно три треда вести сразу
Roman
ну да, interpreter pattern
Vasily
И хуярить в интерпретатор
Vasily
Тогда проблемы, описанные @eglyph , уйдут
Shub
У тебя гораздо больше опыт и все такое, но пожалкйста снизойди до тех у кого нет таких больших проектов и обхясни так как будто они малыши, а ты воспитатель
в общем, ты довольно быстро придешь к пониманию, что лямбда-счисление ограничено в средствах, и что много чего у тебя не получится выразить через лямбды вообще никак, даже srtp не помогут
Shub
ты найдешь баланс в интерфейсах
Shub
затем ты поймешь, что чаще тяжелые зависимости надо поднимать по требованию, т.к. они дорого стоят
Romɑn
ты найдешь баланс в интерфейсах
так это и понятно и сайм наш величайший дон говорит
Roman
Тогда проблемы, описанные @eglyph , уйдут
я, если честно, не понял, какие у него проблемы. Помимо нервной работы
Romɑn
но почему надо всегда и только так и сразу DI
Romɑn
если сейчас можно иф-цию передать
Romɑn
если не нужно сейчас всего того что DI делает?
Shub
если не нужно сейчас всего того что DI делает?
ну судя по сигнатуре, тебе уже надо
Vasily
@eglyph говорит о di не только в разрезе классов, кмк
Ayrat
Ну вы тут развели
Shub
совершенно врено
Romɑn
@eglyph говорит о di не только в разрезе классов, кмк
мб, но что с депенденси режекшен?
Romɑn
мб сначало это сделать:?
Vasily
А про разделение ответственности
Vasily
По факту, onion
Romɑn
А про разделение ответственности
ок, что за отвественность разделяем? Перевди плз