Сообщение 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>>как ты с твоим этим кодом будешь писать код, который это проверяет?
·>
этот код показывает, что ты ни разу правильно не написал тестового кода с использованием DI, правильно было бы так:
·>
·>Это верно.
·>А придумали контейнеры для сборки монструозных монолитных 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>>как ты с твоим этим кодом будешь писать код, который это проверяет?
·>
этот код показывает, что ты ни разу правильно не написал тестового кода с использованием DI, правильно было бы так:
·>
·>Это верно.
·>А придумали контейнеры для сборки монструозных монолитных 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);
·>