замыкание const fn = (myDependencies: Deps) => (...callParams) => {...}?
тут еще надо разобраться зачем нужно все свои сущности через DI строить
Ну вообще чтобы была единая точка где у тебя создается обьект и ты мог заменять реализацию когда надо и при этом ничего не сломав но с этим может справиться и фабричный метод
так а какие сущности надо заменять? многие вещи в проекте выбираются железобетонно. Такой прием как DI нужен крайне редко
а когда припрет придется бегать по 50-100 файлам и заменять вызовы?) DI хорошо ложится на паттерн стратегию ну или когда у тебя есть сервис, который получает массив сервисов в конструктор и потом эти сервисы использует для работы (например массив провайдеров данных с различных ресурсов и тебе нужно вытянуть все данные со всех ресурсов либо по определенному фильтру) Также хорошо когда в можно поменять и у тебя заменится реализация какого то сервиса (Redis кеш заменится на In-memory в голову пришло)
а что мне мешает обернуть нужный мне функционал в сервис модуль, который я буду экспортировать прямо в файл и менять только его когда прижмет? Так в разы лучше чем излишне переусложнять структуру проекта IoC. На реальном опыте был случай когда прижало и надо было меянть 50-100 файлов?
ДА БЫЛ КОГДА С SQS ПЕРЕЕЖАЛИ НА RABBIT
а подробнее можно? то есть либа напрямую везде использовалась? SQS ведет себя идентично RABBIT настолько что их поведение и семантика API идентичны?
мне сложно представить что можно было бы спокойно через IoC тотже лодаш заменить на чтото другое, потому что у меня не получилось, из-за того что даже у таких простых вещей как утилитные библиотеки семантика и поведенеи функций могут в корне по своей природе отличаться и так просто "заменить одну либу на другую и все работает" никогда не встречал на практике - всегда нужен глубокий аналализ, дебаг и тестирование что бы выявить все возможные эдж кейсы
ну пришлось сделать небольшой рефакторинг вместо того чтобы абстрагироваться от либы (готовая абстрация была) они прям ее использовали и в итоге переделали
ну я не против абстрагирования от деталей путем выделение это в сервисы, но при чем тут IoC?
Обсуждают сегодня