7. CodeReview
Dobry feedback “nie jest zły”:
Co to jest za stała 1000?
A ta metoda to jakaś duża…
Może wydzielmy logowania informacji do osobnej
metody?
11. Miesiąc później...
Zadanie drugie:
Implementujemy teraz proces związany z
podejmowaniem pieniędzy z konta (np. w okienku
banku lub bankomacie).
Chcemy nadal logować większe transakcje, tak jak
miało to miejsce w przypadku przelewów z jednego
konta na drugie.
15. Kilka miesięcy później...
➔ Zaimplementowaliśmy kolejnych kilkanaście procesów
➔ Zrobiliśmy dla wszystkich dekoratory
➔ Dla wszystkich dekoratorów napisaliśmy warstwy abstrakcji
➔ Zaczęliśmy się wkurzać na myśl o kolejnym “kopiuj/wklej”
➔ Zaplanowaliśmy dev-meeting aby przemyśleć wszystko
jeszcze raz
16. Programowanie Aspektowe
AOP
Koncept zrodziła się w połowie lat 90.
Jego pomysłodawcami była grupa osób z Xerox
Palo Alto Research Center (PARC).
Koncept na początku został uznany jako “dziwny”.
17. Programowanie Aspektowe
3 założenia:
Jesteśmy zgodni z SOLID i innymi dobrymi
praktykami obiektowymi
Rozdzielamy w kodzie “niezależne zagadnienia”
(cross cutting concerns)
Definiujemy punkty przecięcia “niezależnych
zagadnień” (join point)
18. Programowanie Aspektowe
Słowniczek
Aspekt (Aspect):. niezależna funkcjonalność oprogramowania przecinająca
wiele innych np. cachowanie, logowanie, bezpieczeństwo
Wskazówka/Rada (Advice):. akcja wykonywana przez aspekt w określonych
warunkach działania oprogramowania, np. przed wywołaniem metody
Punkty połączenia/styku/interakcji (Join point):. punkt w kodzie aplikacji,
w którym przecinają się niezależne jej funkcjonalności
Punkty przecięcia (Pointcut):. wyrażenie regularne będące warunkiem
uruchomienia aspektu w danym punkcie styku