Size: a a a

2021 August 28

СА

Сергей Аксёнов... in ctodailychat
Там только проверка на зацикленность.
источник

AS

Alexey Shcherbak in ctodailychat
кстати, вопрос (я давно не заглядывал в корку) - а они это сделали теперь встраиванием в пайплайн компиляции и оно ломает именно билд или все же в самом начале при запуске все падает, как было раньше до появления новых фич .нета ?
источник

OL

Oleg Lutsenko in ctodailychat
В целом в .NET тоже хватает проблем с DI, особенно когда используешь такой кухонный комбайн как autofac - все эти инжекты не только в конструкторы, но и в свойства, замена реализаций сервисов в рантайме, регистрация/извлечение сервисов по произвольному имени.
источник

AS

Alexey Shcherbak in ctodailychat
#hugops, мну вот обратно на .нет сильно тянет, после кучи всего модного молодежного хочется чтобы все просто работало, а не выяснять где в прорве модулей бага, или это твой код неидиоматичненько что-то зовет...
источник

AS

Alexey Shcherbak in ctodailychat
это обычно дисциплиной решается, мы делали просто - стандартный подход - constructor injection, если надо что-то другое - обоснуй зачем. тогда и зоопарка подходов нету и как только человек начинает думать, зачем ему вот нужен другой вариант - в 95% случаев внезапно constructor injection вполне отлично справляется.
источник

СА

Сергей Аксёнов... in ctodailychat
Регистрация по имени - очень нужная штука. Например я REST-контроллеры все привожу к общему интерфейсу, который торчит наружу одним методом Serve по сути. И в http-сервер их пачкой регистрирую.
источник

IV

Igor V in ctodailychat
а почему бы не сделать type DummyCache struct{} и забыть про проверку на nil внутри сервиса? эти проверки усложняют чтение кода да и вообще не нужны в бизнес-сервисах
источник

СА

Сергей Аксёнов... in ctodailychat
Тут я выше идею подрезал, что контейнер можно обложить тестом, который бегает по рефлексиям и проверяет, что каждая сущность в контейнере зарегистрирована и из контейнера поднимается. Звучит норм.
источник

СА

Сергей Аксёнов... in ctodailychat
В моменте, когда я писал этот тест, мне показалось, что так будет быстрее. Сейчас уже не кажется, наверное перепишу.
источник

СА

Сергей Аксёнов... in ctodailychat
Тем более что IDE слепит болванку по интерфейсу одним движением.
источник

IV

Igor V in ctodailychat
именно
источник

OL

Oleg Lutsenko in ctodailychat
А потом при стартапе у тебя регистрируется сервис по флагу из переменной среды. Нужно валидировать в рантайме
источник

СА

Сергей Аксёнов... in ctodailychat
Нужно мокать AppConfig
источник

OL

Oleg Lutsenko in ctodailychat
Да, согласен. Только дисциплиной и статическими анализаторами.
источник

СА

Сергей Аксёнов... in ctodailychat
...и телесными наказаниями.
источник

OL

Oleg Lutsenko in ctodailychat
Вариант, но я бы все равно не тестил это, есть шанс пропустить какие-то регистрации, и доверил делать проверки DI контейнеру при старте, у него есть вся актуальная информация для полной валидации
источник

OL

Oleg Lutsenko in ctodailychat
Вот если DI контейнер не дает такой возможности, я бы задумался о его смене
источник

СА

Сергей Аксёнов... in ctodailychat
Контейнер может проверить только то, что DAG действительно acyclic. В зависимости от конфига некоторые компоненты могут просто не понадобиться, например.
источник

СА

Сергей Аксёнов... in ctodailychat
Можно сказать ему не возвращать null, а выдавать ошибку. Это нормально, даже я бы сказал штатное поведение при старте. Но довольно грустно покатить на прод сборку только чтобы выяснить, что она падает при старте.
источник

AS

Alexey Samoylov in ctodailychat
Есть готовые инструменты автогенерации моков
источник