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