Wątek przeniesiony 2019-02-25 21:56 z przez somekind.

IoC a DI

Odpowiedz Nowy wątek
2019-02-25 21:46
0

Cześć. Zmagam się ze zrozumieniem pojęć i różnic pomiędzy IoC a DI. Nigdy nie przykuwałem do tego uwagi, po prostu wiedziałem jak się powinno pisać kod.
Nie powinienem robić aby jakaś klasa zależała od drugiej, czyli pisać w klasie Test Class class = new Class();, tylko powinienem wstrzykiwać tę klasę do konstruktora klasy Test. Plusy znam, łatwe utrzymanie, można takie klasy testować zmieniając implementacje.

No ale właśnie, wiem jak to się robi, nie wiem co to dokładnie oznacza. Zawsze mi się wydawało, że to co u góry napisałem, to jest wstrzykiwanie zależności. Gdzieś nad tą klasą tworzę obiekt, który wstrzykuje i to jest właśnie Dependency Injection.

Czy Inversion Of Control jest to cały koncept tego tak jakby? Cały zamysł, a DI to jest tak jakby sposób tego zrobienia?

Przemaglowałem już wiele stron zaczynająć od SO, kończąc na jakiś udziwnionych ścianach tekstu, ale nie mogę tego do końca zrozumieć.
Może mnie ktoś oświecić?

Pozostało 580 znaków

2019-02-26 12:09
0

@jarekr000000: sądze że aspekty w typowej aplikacji biznesowej do zarządzania transakcjami czy security są całkiem OK, choć faktycznie sądze że lepiej by default korzystać z innych narzędzi i prawde powiedziawszy nie monad tylko klasycznego obiektowego rozwiązania


Nie pomagam przez PM. Pytania zadaje się na forum.

Pozostało 580 znaków

2019-02-26 13:38
0

Decorator niestety uwypukla biedę programowania obiektowego, ale oczywiście, że to lepsze niż Stringly typed AOP.
Poza tym, naprawdę nie sądzę, że jakiś poważniejszy biznes powinien swoje działanie opierać na tym, że akurat kontener będzie miał lepszy dzień, wstaną te aspekty co trzeba i dzieki szcześciu jeszcze podepną się do tych co trzeba metod (bo nikt nie zmieni nazw). Mam jeden projekt gdzie security tzw. runAs przypasowane jest nazwami metod i klas. Miodzio :/


Bardzo lubie Singletony, dlatego robię po kilka instancji każdego.

Pozostało 580 znaków

2019-02-26 13:56
0

Spring Security działa całkiem dobrze z tego co zauważyłem. No i powiedz mi co jest biednego w tych decoratorach i OOP? Bo jak dla mnie OOP jest tak samo dobre jak FP w większości projektów. Odnosze wrażenie że czasami na siłe próbujesz wpychać FP tam gdzie nie trzeba...


Nie pomagam przez PM. Pytania zadaje się na forum.

Pozostało 580 znaków

2019-02-26 14:52
0

Tu Mario mści sie na decoratorach (między innymi)

Nic nie usiłuję wpychać. Filozofię wyjaśnia to video:
https://vimeo.com/90738761#t=28m42s

(od wskazanego miejsca - reverse list of bananas)


Bardzo lubie Singletony, dlatego robię po kilka instancji każdego.
edytowany 2x, ostatnio: jarekr000000, 2019-02-26 14:54
Chętnie obejrze jak będe miał czas, choć wątpie żebym przestał stosować wzorce :) - scibi92 2019-02-26 21:32
Są podobne wideo jeszcze od Teda Newarda i innych. Generalnie dużo wzorców to tylko zapchajdziury dla brakujących featerow w języku. Nie ma sensu ich stosować jeśi twój język trochę dorósł. A może raczje- nie ma sensu wprowadzać specjalnej nazwy i się ceregielić jeśli jest bardziej ogólna koncepcja, która to pokrywa. (W tym wideo : high order function). - jarekr000000 2019-02-26 21:35
Dobra obejrzałem odnosnie dekoratora. Generalnie częściowo mówi prawde, ale nie wszystko da sie się sprowadzić do lambd i funkcji... Jednak OOP w pewnych miejscach będzie lepsze of FP, taka jest moja opinia. - scibi92 2019-02-26 21:54
Źle mi się kojarzy ten akcent. :P - BigosZpomarańczy 2019-02-27 10:34

Pozostało 580 znaków

2019-02-26 15:07
0

A to aspekty muszą być stringly typed i polegać na nazwach metod? o.O
W innych językach jakoś nie ma takich problemów.


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

2019-02-26 15:39
0

@somekind: w Javie tez nie musisz polegać na nazwach metod w aspektach


Nie pomagam przez PM. Pytania zadaje się na forum.
To ja w takim razie nie rozumiem w czym rzecz. :( @jarekr000000 pisał tak, jakby to była przyczyna problemów. - somekind 2019-02-26 16:07
No bo w Javie można polegac i na nazwach metod, i na adnotacjach itd. - scibi92 2019-02-26 16:27
Tylko po co wybierać gorsze rozwiązanie, a potem upierać się, że cała koncepcja jest zła? - somekind 2019-02-26 17:11
Aspekty zrobione na nazwach metod to pole minowe. Aspekty chodzące na adnotacjach/(konwencjach) to po prostu pole pełne krowich placków. To drugie jest istotnie lepsze i mniej niebezpieczne. Jakkolwiek, wdepnięcia nie zaliczam do przyjemności. Ale to kwestia gustu. - jarekr000000 2019-02-26 17:55
Tu nie chodzi o to, na czym aspekty są oparte, ale do czego użyte. Problemem jest używanie ich do logiki biznesowej, a nie do infrastrukturalnej. - somekind 2019-02-27 01:25
No w Javie się używa aspektów to głównie 2/3 rzeczy: transakcyjności, security i ewentualnie cachowania - scibi92 2019-02-27 07:57

Pozostało 580 znaków

2019-02-26 17:20
0

Jeszcze jedno pytanie, bo znalazłem taką definicję

Inversion of Control is a principle in software engineering by which the control of objects or portions of a program is transferred to a container or framework

Jeżeli nie piszę w żadnym frameworku, tylko tworzę prostą aplikację, w której nie tworzę silnych zależności pomiędzy klasami, to w jaki sposób mogę delegować kontrolę do kontenera lub frameworka? Czy jest to błędna definicja?

Pokaż pozostałe 7 komentarzy
@jajko1233: żadna nie będzie kontenerem, po prostu odwrócisz zależność do warstwy wyżej, ale to nie czyni jej kontenerem - pustypawel 2019-02-27 08:01
@somekind: która cześć jest błędna? - jajko1233 2019-02-27 09:55
@pustypawel: ale w takim razie gdzie oddelegowuje kontrole wg definicji (choć może przez to ta definicja jest błędna, wg somekinda) - jajko1233 2019-02-27 09:56
Definicja mówi o tym, że IoC mamy wtedy gdy przekazujemy kontrolę do kontenera lub frameworka, co jest błędne bo możemy robić IoC bez kontenera i frameworka - pustypawel 2019-02-27 09:57
@pustypawel: No to w takim razie o tym był cały ten post i liczyłem od razu na odpowiedz ze to jest błędna definicja:D - jajko1233 2019-02-27 10:12

Pozostało 580 znaków

2019-02-27 09:59
0

Nie wiem skąd się nagle wzięło w temacie Aspect oriented Programming, ale warto pamiętać, że to rak. Niektórzy mówią, ze gorszy od GOTO.
Ślepa ścieżka ewolucji programowania obiektowego. Polecam nie zblizać się jesli nie trzeba.
AOP można użyć przy debugowaniu skomplikowanych bugów lub ewentualnie w monitoringu. Pchanie tam czegokolwiek, co jest ważne dla aplikacji (transakcje, security, itp ), to recepta na katastrofę.

Czy tylko dla mnie brzmi to jak Kult Cargo przepakowany sezonowym Hype..?

Za miesiąc się okaże, że kontener IOC to zło wcielone...

okaże, że kontener IOC to zło wcielone ty chyba przybyłeś do nas z roku 2009 a mamy 2019 :D - Shalom 2019-02-27 10:12
Ludzie oszaleli... - BigosZpomarańczy 2019-02-27 10:13
@Shalom: możesz wyjaśnić? - scibi92 2019-02-27 11:04
Kontener, AOP używa się, kiedy wnosi wartość do projektu. A samo AOP to nie jest żadne zło wcielone i najczęściej jest używane jako uproszczenie pewnych mechanizmów jak przekazywanie metadanych lub wywoływanie jakichś części infrastruktury. - BigosZpomarańczy 2019-02-27 11:16
@scibi92: no bo kolega pisze że Za miesiąc się okaże a @jarekr000000 to wieszczy to już od lat :P - Shalom 2019-02-27 11:25
Mamy tu też takiego, co twierdzi, że OOP to zło. Różni są ludzie. - somekind 2019-02-27 12:34

Pozostało 580 znaków

2019-02-27 12:50
0
BigosZpomarańczy napisał(a):>

Za miesiąc się okaże, że kontener IOC to zło wcielone...

Z cyklu:
2ddy1a.jpg

Kontenery aplikacji w java

Poza tym nie zło wcielone. Na taki tytuł trzeba sobie zasłużyć.
To po prostu zwykła bieda z nędzą.


Bardzo lubie Singletony, dlatego robię po kilka instancji każdego.
edytowany 1x, ostatnio: jarekr000000, 2019-02-27 12:52
To po prostu zwykła bieda z nędzą. Może mam inne odczucia dlatego że nie piszę w Javie. - BigosZpomarańczy 2019-02-27 13:59

Pozostało 580 znaków

2019-02-27 13:08
1
jarekr000000 napisał(a):
BigosZpomarańczy napisał(a):>

Za miesiąc się okaże, że kontener IOC to zło wcielone...

Z cyklu:
2ddy1a.jpg

Kontenery aplikacji w java

Poza tym nie zło wcielone. Na taki tytuł trzeba sobie zasłużyć.
To po prostu zwykła bieda z nędzą.

Skoro tak wyglądał świat 3000 lat temu to dzisiaj powinno być mniej więcej tak:

Albo tak:

edytowany 1x, ostatnio: BigosZpomarańczy, 2019-02-27 13:16

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0