Информация об изменениях

Сообщение Re[19]: О пользе Dependency Injection от 19.01.2021 10:48

Изменено 19.01.2021 11:10 takTak

Re[19]: О пользе Dependency Injection
T>>все разговоры в этой теме от банального непонимания, для чего придумали DI / IoC
·>Это верно.
·>А придумали контейнеры для сборки монструозных монолитных enterprise приложений из крупных отдельно поставляемых компонент, плагинной архитектуры, внутри так называемых application servers.

о чём ты вообще? идея юнит-тестирования намного старше веб-серверов...
·>Но это многе не понимают, и даже когда пишут микросервис из 5 классов, втыкают туда контейнер, "ибо надо". Но объяснить для чего — не могут.

T>>ну так вот тебе надо ПРОТЕСТИРОВАТЬ, что схема базы данных, используемая твоим кодом, актуальна, например,

·>А ещё многие не понимают разницу между выделением интерфейсов, IoC, DI, контейнерами.

T>>как ты с твоим этим кодом будешь писать код, который это проверяет?

·>
·>var mainService = new MainService(new InMemoryProvider(), new Configuration(), new IdentityProvider(Thread.Current.Identity), new FileManager() , new EmailSerice(new SmtrAddress(25.145.789), etc.));
·>...
·>testThis(mainService);
·>testThat(mainService);
·>


этот код показывает, что ты ни разу правильно не написал тестового кода с использованием DI, правильно было бы так:


·>
 >Container.Register<InMemoryProvider, DbProvider> (); // и 5 других зависимостей мне трогать не надо
·>var mainService = Container.Resolve<MainService> ();
·>...
·>testThis(mainService);
·>testThat(mainService);
·>
Re[19]: О пользе Dependency Injection
T>>все разговоры в этой теме от банального непонимания, для чего придумали DI / IoC
·>Это верно.
·>А придумали контейнеры для сборки монструозных монолитных enterprise приложений из крупных отдельно поставляемых компонент, плагинной архитектуры, внутри так называемых application servers.

о чём ты вообще? идея юнит-тестирования намного старше веб-серверов...
·>Но это многе не понимают, и даже когда пишут микросервис из 5 классов, втыкают туда контейнер, "ибо надо". Но объяснить для чего — не могут.

T>>ну так вот тебе надо ПРОТЕСТИРОВАТЬ, что схема базы данных, используемая твоим кодом, актуальна, например,

·>А ещё многие не понимают разницу между выделением интерфейсов, IoC, DI, контейнерами.

T>>как ты с твоим этим кодом будешь писать код, который это проверяет?

·>
·>var mainService = new MainService(new InMemoryProvider(), new Configuration(), new IdentityProvider(Thread.Current.Identity), new FileManager() , new EmailSerice(new SmtrAddress(25.145.789), etc.));
·>...
·>testThis(mainService);
·>testThat(mainService);
·>


этот код показывает, что ты ни разу правильно не написал тестового кода с использованием DI, правильно было бы так:


·>
 >Container.Register<InMemoryProvider, IDbProvider> (); // и 5 других зависимостей мне трогать не надо
·>var mainService = Container.Resolve<MainService> ();
·>...
·>testThis(mainService);
·>testThat(mainService);
·>