Kiedyś kazali wstrzykiwać zależności przez konstruktor, bo to ułatwia testowanie i wprost pokazuje, jakie zależności ma dany komponent. Teraz twórcy Angulara stwierdzili, że lepiej przez inject(). Jakie macie zdanie? Migrować z konstruktorów na inject()?

Było:

export class PiesComponent {
constructor(private kosc: KoscService) {}

Wstrzykiwanie zależności w OOP

  • Tylko przez konstruktor 64.3% (18)
  • inject(), @Inject, @Autowired... 35.7% (10)

Oddanych głosów: 28

  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@ly000: Z jednej strony tak, z drugiej możesz sobie napisać własną funkcję indeks() w FW, który tego nie obsługuje. W dokumentacji Angulara jest wyjaśnione, że inject() pozwala wstrzyknąć zależność gdziekolwiek, np. w jakimś utilsie.

Po drugie i tak uzależniasz, jeśli wstrzykujesz komponenty danego FW.
  • Odpowiedz
@SendMeAnAngel: no i po co robić te akrobacje, skoro możesz po prostu użyć konstruktora? konstruktor daję ci też to, że masz gwarancję, masz masz dostęp do danej zależności od początku istnienia obiektu, już nawet w konstruktorze, i wynika to bezpośrednio ze składni języka, a nie jakichś czary-mary frameworka. tego typu "injecty" np. w Javie to się używało 20 lat temu i od baaardzo dawna uważa, się że to jest zła
  • Odpowiedz
Ostatnio przyszło mi zagłębić się bardziej w paradygmat obiektowy i naszła mnie zagwostka. Jakim terminem można zbiorczo nazwać właściwości i metody? Pola? #programowanie #oop
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Wszystkie klasy powinny być finalne bo dziedziczenie jest złe. W najlepszym przypadku niczego nie upraszcza, a w najgorszym prowadzi do sterowania skaczącego po kodzie jak pijany zając.
  • Odpowiedz
Fajnie. 15 lat temu twierdzono że finał to zło, bo uniemożliwia dziedziczenia, teraz się to zmieniło i zmieniać się będzie.
Ogólnie, pisz jak ci wygodnie i twojemu zespołowi, bo czasami powstają potworki w stylu "bo taka była filozofia na najlepszy późniejszy rozwój, a tego jednego co ja rozumiał już nie ma".
Offtop: używacie interfejsów, a abstract? Czy też umarło?
  • Odpowiedz
#ddd #oop #java #programowanie #hexagonalnaarchitektura

Jak mam se domenę, obiekty o znaczeniu biznesowym, które coś se robią, bez używania zewnętrznych rzeczy i mam adaptery, które potrafią np. przekonwertować obiekt domenowy do xml albo na dto albo wyciągnąć obiekt domenowy z bazy to teraz jak to połączyć? Prawidłowe będzie gdy:
stworzę se service, który będzie używał obiektów domenowych i adapterów (zdefiniowanych jako abstrakcji)?
a.....e - #ddd #oop #java #programowanie #hexagonalnaarchitektura

Jak mam se domenę,...

źródło: l7knijwaobb51

Pobierz
  • 32
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@aczutuse: Jeśli w twoim przypadku umieścisz DTO w web, który jest częścią infrastruktury, to w jaki sposób serwis aplikacyjny który nie powinien mieć referencji do komponentów będących częścią warstwy infrastruktury będzie na nich operował? Nie możesz mieć sytuacji w której pakiet web ma referencję do application i jednoczesnie application ma referencję do web.

Jeśli serwis operuje na DTO i jednocześnie jest wywoływany w kontrolerze to DTO muszą siedzieć w
  • Odpowiedz
@aczutuse: Infra bo to jest szczegół implementacyjny. Dziś używasz wbudowanych Springowych komponentów, a jutro możesz chcieć użyć dedykowanej zewnętrznej biblioteki, a po jutrze będziesz chciał odpalać job-a poza procesem aplikacji żeby mieć pewność, że jak padnie aplikacja to job będzie sobie dalej działał.

Co do osobnego pakietu to zależy od skali i struktury projektu. Ja preferuję mieć osobne pakiety. Czyli mam pakiet z adapterami do bazy danych, pakiet z adapterami
  • Odpowiedz
Singleton fajnie działał do momentu autoryzacji bo w momencie kiedy kończy się request to autoryzacja przepada w p---u


@seba_thc666: To użyj jakiegoś storage, np. Redisa czy nawet bazy danych do przechowywania tokenu.
  • Odpowiedz
Powiem Wam szczerze, zacząłem się bawić w tą całą obiektówkę i jakoś nie widzę skąd ten hype? Patrzę jak to w c# jest zrobione. Po co na siłę udawać, że części kodu mają odpowiedniki w świecie materialnym? Tylko komplikuje kod i proste rzeczy nagle robi się dwa razy dłużej. Ktoś faktycznie używa komercyjnie takich wynalazków?

#programowanie #programista15k #gorzkiezale #dotnet #oop #pytaniedoeksperta
E.....o - Powiem Wam szczerze, zacząłem się bawić w tą całą obiektówkę i jakoś nie wi...

źródło: csharp

Pobierz
  • 39
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

To co wkleiłeś to jest demo na najniższym poziomie dla kogoś kto kompletnie nie wie z czym się je. Jak zaczynasz rozumieć OOP to zaczynasz widzieć schematy podczas swojego kodowania gdzie coś można opakować w klasę, która ma jakieś swoje responsibility i idzie to z automatu podczas pisania. Jak się zaczynasz bawić jako student to nie załapiesz ot tak od razu. Krytykowanie OOP, bo coś tam na studiach było i nie zrozumiałeś
  • Odpowiedz
Jak nazwać Interface A, który mówi że obiekt, który go rozszerza jest w stanie przetworzyć Interface B?

Na przykład: mam klasę C z pakietu 3th party, która na podstawie danych z tablicy renderuje formularz opcji. Mój framework podnosi abstrakcję wyżej i zamiast tablicy operuje na interfejsach. Dlatego Powstała klasa D, która dziedziczy po klasie 3th party C i zamiast tablicy z parametrami przyjmuje interfejs A. Interfejs A jest uniwersalnym interfejsem zawierającym konfigurację formularza
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@czlowiek_z_lisciem_na_glowie:

Klasy D, E, F, to są adaptery, i zgodnie z praktyką composition over inheritance, nie powinieneś rozszerzać klas 3rd party, tylko klasa 3rd party jest zależnością adaptera.

Interfejs B, który będzie implementowany przez D,E,F, powinien nazywać się od tego, co reprezentuje. "Przetwarzanie A", to mało konkretna informacja, więc ciężko powiedzieć jak dokładnie ma się
  • Odpowiedz
Powiem Wam szczerze, zacząłem się bawić w tą całą obiektówkę i jakoś nie widzę skąd ten hype? Patrzę jak to w c# jest zrobione. Po co na siłę udawać, że części kodu mają odpowiedniki w świecie materialnym? Tylko komplikuje kod i proste rzeczy nagle robi się dwa razy dłużej. Ktoś faktycznie używa komercyjnie takich wynalazków?

#programowanie #programista15k #gorzkiezale #dotnet #oop #pytaniedoeksperta
teddybear69 - Powiem Wam szczerze, zacząłem się bawić w tą całą obiektówkę i jakoś ni...

źródło: comment_1619703751VzwuH0BF5Kd1xrzu5S6mxf.jpg

Pobierz
  • 80
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@teddybear69: Ktoś Ci coś źle powiedział. Programowanie obiektowe nie ma na celu odwzorowania świata naturalnego. OOP ma zapewnić enaksupację, dziedziczenie, polimorfizm i abstrakcje.
  • Odpowiedz
Z racji że potężnemu juniorowi 3k nie przystoi nie potrafić klas to klepie sobie w pracy nowy projekt, mianowicie bibliotekę powtarzalnych funkcji żeby nie pisać ich za każdym razem na nowo czy kopiować.

Stworzyłem sobie w main.py klasę Library, w środku funkcję redminelogin biorącą argumenty address i apikey. Jak w drugim pliku odnieść się do funkcji z main.py? #python #programowanieobiektowe #oop #redmine
NewEpisode - Z racji że potężnemu juniorowi 3k nie przystoi nie potrafić klas to klep...

źródło: comment_1619166422yu88oQYGdAdJoh4upTrEY8.jpg

Pobierz
  • 16
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Jak w drugim pliku odnieść się do funkcji z main.py?


@NewEpisode: ale wiesz że w tym przypadku to "main.py" mogłaby być miejscem gdzie wołasz funkcje a nie je importujesz po innych plikach?
  • Odpowiedz
@przepyszna_frytka: no wlasnie, tak jak powiedzialem: pojęcie OOP jest rozmyte. Dla mnie OOP to mocne połączenie danych i funkcji, które są fundamentem prawie każdego języka np. Golang czy Python. Dla wykładowców OOP to często dziedziczenie i duża liczna wzorców projektowych
  • Odpowiedz
Simula 67 uznawana jest za pierwszy obiektowy język programowania. To właśnie w Simuli po raz pierwszy pojawiły się klasy, dziedziczenie czy funkcje wirtualne. Jeśli chcecie dowiedzieć się nieco więcej o tym języku, zachęcam do lektury najnowszego artykułu na PolyDev.PL - Simula – narodziny programowania obiektowego.

Jeśli interesują Cię moje wpisy, obserwuj tag #polydev
#programowanie #informatyka #oop #simula #historiainformatyki
  • 1
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

1.Jest jakaś zasada, dobra praktyka, żeby w #javascript #oop pobierać elementy strony tylko w jednej, głównej klasie, która ma obsługiwać interfejs aplikacji? Czy mogę deklarować zmienne zawierające elementy DOM w różnych klasach w zależności od potrzeby? Na przykład mam klasę dedykowaną tagom (tablica tagów, dodawanie i usuwanie tagów, wyszukiwanie za pomocą tagów) i wygodniej byłoby mi pobrać diva.tags-list już w tej klasie i dodawać do niego spany.tag. Wydaje
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

żeby w #javascript #oop pobierać elementy strony tylko w jednej, głównej klasie, która ma obsługiwać interfejs aplikacji?


@lunaexoriens: nie rozumiem o co Ci chodzi, co masz na myśli pisząc "pobierać"?

I dlaczego przyczepiłeś się tego oop? W zasadzie jeżeli można uniknąć tworzenia klas powinno się tego nie robić. Nie próbuj pisać w js tak jakbyś pisał w Javie albo
  • Odpowiedz
@lunaexoriens: > Trzymać wszystkie w jednej klasie czy w zależności od potrzeb?

@lunaexoriens: możesz po prostu trzymać je w jakimś obiekcie, nie ma potrzeby tworzenia do tego klasy. Generalnie powinno się używać najprostszych metod.

A co do obiektówki, to po prostu chcę ją lepiej zrozumieć, zawsze przydatna umiejętność.

JS wspiera też programowanie funkcyjne i to raczej ono jest kluczem do pisania dobrego kodu w JS. Klasycznie rozumiane programowanie obiektowe i
  • Odpowiedz
Cześć,
znalazłby się tutaj jakiś dobry człowiek umiejący w jave, który byłby wstanie sprawdzić dlaczego mój win condition w grze Kółko i krzyżyk nie działa ?

#programista15k #java #swing #oop
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach