Kolejny post o Unity 3d musi jeszcze chwilę poczekać. Niedawno zdobyłem nową dev-zabawkę (ekhm!) a mianowicie licencję na PostSharp. Gdyby ktoś nie wiedział – jest to narzędzie do programowania w stylu AOP – aspektowym spojrzeniu świata. Czym są aspekty nie będę pisał – można znaleźć na ten temat sporo informacji. Z lokalnego podwórka polecam DevTalk 02 czy tagi AOP lub PostSharp na dotnetomaniak.pl.

Unboxing

Samo narzędzie instaluje się bezproblemowo oraz fajnie się integruje z Visual Studio, po czym od razu mamy dostępny samouczek, który pokieruje nami w świecie aspektów.

Tutorial Post Sharp’a dla zielonych

Minus jednak za fakt, że wiele linków prowadzi na stronę 404. Na szczęście, pomijając ostatnią lekcję, pozostałe da się odszukać na stronie PostSharp’a całkiem szybko i sprawnie. Same lekcje, te których linki nie kierują na 404, są podane bardziej jako ‘selling points’ – bardziej mające skłonić do zakupu niż techniczne lekcje uczące AOP, ale nie można im zarzucić, że w temat nie wprowadzają. Dodatkowo dzięki samodzielnemu szukaniu tych lekcji, których linki były zepsute – trafiamy na bardziej techniczne informacje.

404

Kilka linków prowadzi do wyjątku ;)

Nie wiem czy ktoś zapomniał zaktualizować linki czy po prostu są w jej trakcie tak czy inaczej malutki niesmak 😉

UPDATE (08.02.2015): Skontaktowała się ze mną osoba z PostSharp’a przekazując informacje, że linki do materiałów szkoleniowych zostały już naprawione. Rzeczywiście w chwili obecnej wszystkie linki działają. Doszło także kilka nowych lekcji co wzbogaca naszą wiedzę o AOP.

PostSharp tutorials

Zaktualizowane lekcje PostSharpa

 

 

OnActionExecuting()

Innym, fajnym elementem integracyjnym jest PostSharp Explorer – lista wszystkich aspektów użytych w naszym projekcie. Dzięki niemu odnajdziemy implementację naszych klas aspektowych za pomocą dwukliku.

Explorer pokaże nam zarówno nasze aspekty jak i kod, który jest z nimi związany

Explorer pokaże nam zarówno nasze aspekty jak i kod, który jest z nimi związany

Affected code – pozwala zorientować się gdzie w kodzie mamy wstrzykniętą dodatkową funkcjonalność za pomocą aspektów. Dzięki temu unikniemy niespodzianek, w stylu coś działa inaczej niż widzimy w kodzie. Te niespodzianki wyeliminuje także dodatkowe podświetlenie kodu (sprawdziłem na metodach), który podlega aspektom. Dodatkowa informacja, która pojawia się pod SmartTag’iem rozwieje wszelkie wątpliwości co dodatkowego się dzieje.

PostSharp wykorzystuje SmartTagi aby dodatkowo informować programistę o tym w którym miejscu działają aspekty

PostSharp wykorzystuje SmartTagi aby dodatkowo informować programistę o tym w którym miejscu działają aspekty

Sam proces dodawania aspektów jest banalny i został nawet opakowany w wizarda. Sprowadza się on do instalowania paczki Nuget’a po czym możemy już aspektować na całego pisząc kod. W zasadzie można powiedzieć, że w bardzo wielu miejscach narzędzie to prowadzi nas za rączkę za pomocą różnej maści kreatorów. Chcesz dodać logowanie w całej aplikacji – masz kreator, jakieś Policy? – bum mamy i to. Chcesz dodać jakieś ograniczenie? – mamy i to także. Przydatne dla początkujących gdyż będą mogli bardzo szybko zacząć działać z tym narzędziem. Minusem dla zaawansowanych byłoby ukrycie przed nimi co tak na prawdę dzieje się pod spodem. Na to jednak także jest sposób, bo w zasadzie Summary każdego kreatora zawiera opis co tak na prawdę stanie się po jego uruchomieniu.

Objaśnienia kreatora

Kreatorami PostSharp stoi – na szczęście dla zaawansowanych jest opis słowno-muzyczny ;)

Tak więc jest coś i dla noob’a i dla wymiatacza. Sweet & Neat!

Sam Post Sharp ma także proste okienko opcji konfiguracyjnych, które pozwalają (w kilku aspektach ;)) ustawić pracę narzędzia do naszych potrzeb. Raczej jednak długo tam miejsca nie zagrzejemy, co w sumie dobrze bo PostSharp ma nam pracę ułatwiać a nie dorzucać niezliczone rzesze opcji nad którymi musimy się pochylić aby je zrozumieć i dostosować.

Finalize()

Sumując te powyższe dywagacje można napisać, iż PostSharp w bardzo fajny sposób pozwala początkującym osobom wejść w świat aspektów. Dzięki tutorialowi (choć mogliby go naprawić) oraz wszechobecnym wizardom sprawia, że krzywa uczenia jest dość płaska. Na plus zasługuje także pokazanie alternatyw dla PostSharp’a na oficjalnej stronie narzędzia. Ja natomiast mam nadzieję, że już niedługo uda się zastosować PostSharp’a w jakimś komercyjnym projekcie.

Dodatkowe materiały do poszerzenia wiedzy o AOP: