Aspektovo orientovane programovanie

oss

  • ***
  • 244
    • Zobrazit profil
    • E-mail
Aspektovo orientovane programovanie
« kdy: 27. 03. 2020, 08:38:30 »
Ahojte,
pouzivate ci uz profesionalne alebo ametrsky AOP?
Co nim riesite a v com vam pomohol?

Skusil som si jeho zaklady a natchlo ma to, hlavne v spojeni z generikami. Co myslite, ze mu brani v rozsireni?

(PS: toto nie je tema o FP, tych je tu dost, ak chcete svetu povedat ake uzasne albo zle je FP tak je tu na to tem dost.)


Ink

  • *****
  • 668
    • Zobrazit profil
    • E-mail
Re:Aspektovo orientovane programovanie
« Odpověď #1 kdy: 27. 03. 2020, 08:41:27 »
Ahojte,
pouzivate ci uz profesionalne alebo ametrsky AOP?
Co nim riesite a v com vam pomohol?

Skusil som si jeho zaklady a natchlo ma to, hlavne v spojeni z generikami. Co myslite, ze mu brani v rozsireni?

(PS: toto nie je tema o FP, tych je tu dost, ak chcete svetu povedat ake uzasne albo zle je FP tak je tu na to tem dost.)

Mohl bys napsat seznam projektu/prikladu, ktere Te inspirovaly?

Re:Aspektovo orientovane programovanie
« Odpověď #2 kdy: 27. 03. 2020, 08:46:33 »
Hlavně to chápat jako doplňkovou metodiku k těm velkým (OOP, FP...).

Většinou na logování a měření performance. Kdysi i na nějakou bezpečnost (kontrola, že je k dispozici příslušné oprávnění).

luvar

  • ***
  • 238
    • Zobrazit profil
    • E-mail
Re:Aspektovo orientovane programovanie
« Odpověď #3 kdy: 27. 03. 2020, 21:57:56 »
AOP som bol dakedy nazoru, ze iba na "nepretinajuce sa zalezitosti". Napriklad spomenute meranie performance, ci logovanie. Aktualne sa dostavam v spring (java) frameworku na level, kedy dokazem akceptovat aj take, ze security riesi AOP pristup. Napriklad.

Dalsim levelom je, ze cez spring-data-rest je vytvoreny projekt, ktory ma zadefinovane entity a metody v repozitaroch a poskytuje plne CRUD veci k nim, spolu s nejakym hypermedia formatom (HAL, ci aktualne uz aj daco ine podporuju). Nasledne, ked tam chce clovek pridat nejaku biznis logiku (napr.: zmazat entitu faktura mozes, len pokial nebola vyplatena), tak clovek ide defoltne tak, ze si implementuje vsetko pre operaciu mazania sam. To znamena nejake sql, biznis logiku, vhodne controller metody, error handling+formating a samozrejme korektne formatovanie odpovedi vo zvolenych formatoch (HAL+JSON napr). Proste, ak mi nevyhovuje defolt, tak zrazu musim doplnit 5 tried po 100 riadkoch. Namiesto toho je ale mozne pouzit AOP (su i ine moznosti samozrejme) a na vhodnom mieste vykonat validaciu biznis obmedzeni a pripadne prerusit povodne vykonavanie volani a upravit vysledok volania, alebo vyhodit vynimku a vyuzit opat celu masineriu (automagic things) spring-u k spravnemu konvertovaniu erroru a odpovedi.

Ale inak je to stale prasacina na prvy pohlad (a hlavne pre noveho cloveka v time je to sialeny kognitivny load).

Re:Aspektovo orientovane programovanie
« Odpověď #4 kdy: 28. 03. 2020, 01:19:50 »
AOP je způsob, jak z nešpagetového kódu vyrobit špagetový, kdy se vzájemně volá cokoli odkudkoli. Vtip je v tom, že ty špagety jsou definované deklarativně, v čemž je ta pointa.


Re:Aspektovo orientovane programovanie
« Odpověď #5 kdy: 28. 03. 2020, 03:32:31 »
AOP je samozrejme zaklad nejvetsi chlouby Springu  a Javy a sice JPA anotace s JDBC, Transactional od Springu, a pripadne i Hibernate, diky kterym nemusime vubec resit rucne transakce, commity a dalsi spoustu boilerplatu ve velkem projektu - o tom si pythonisti muzou nechat jen zdat. Teda alespon do te doby, nez nejake pitome ucho co JPA ani nezna pouzije jen tak ze srandy a modrnosti nejakou NoSQL databazi nebo podobnou jinou sra cku.

Spring pouziva AOP i pro to aby sam o sobe mohlo fungovat jeho pojetí Inversion of Control.

Ale sam o sobe jsem nemel potrebu AOP tvorit a ani bych to nikdy nedelal, vyjma teda logovani. A to spise jako takova docasna obezlicka a to jeste k tomu na zdupanem osklivem projektu. Na mereni performance mozna tak u nejakych strarych projektu, jinak uz se pouziva Spring XRays, coz je samozrejme taky zalozene na AOP.
« Poslední změna: 28. 03. 2020, 03:36:21 od PetrK »

Re:Aspektovo orientovane programovanie
« Odpověď #6 kdy: 28. 03. 2020, 07:01:59 »
Jinak používat custom AOP na projektu jakožto nějký magic pro logiku která má být normálně ve třídách, to jsem ještě neviděl, a dost mi to něčím smrdí. V podstatě AOP programátor používá pouze v roli uživatele už hotových, vyrobených knihoven.

Jo a ono to AOP mi nějak připomíná v Pythonu ty Dekorátory. Resp. šlo by to přes ně provozovat taky.
« Poslední změna: 28. 03. 2020, 07:05:46 od PetrK »

Re:Aspektovo orientovane programovanie
« Odpověď #7 kdy: 28. 03. 2020, 17:55:24 »
Já bych AOP se Springem úplně neztotožňoval, je to obecný koncept s dalšími implementacemi i v jiných jazycích.