Strona główna > Java > Nowy sposób programowania … no może nie taki nowy

Nowy sposób programowania … no może nie taki nowy

Ostatnie spostrzeżenia (poprzednie dwa posty) doprowadziły do dalszych wniosków. Poprzez nowy sposób tworzenia proxy (post 1), to jakie daje to możliwości; oraz próbę stworzenia skondensowanego kodu do operowania na elementach kolekcji (post 2) doszedłem do tego:

      1) Tworząc proxy na obiektach klasy bazowej mogę „nagrywać” ich zachowanie.
      2) Nagrywanie może polegać na przechwyceniu zamiaru wywołania danej metody na rzecz obiketu wskazanej klasy, bez faktycznego wywoływania tego (co jest korzystne, kiedy potrzebujemy tylko dowiedzieć się o zamiarze, bo samo wywołanie może być kosztowne lub czasochłonne).
      3) Takie nagranie (daną metodę) można odtwarzać wielokrotnie, zmieniając obiekt na rzecz którego jest to wywoływane lub przekazywane argumenty.

Poniżej kod pokazuje to (z zaznaczenie która elementy z powyższego opisu są realizowane):

		LazyEvaluation<Person> lazyEvaluation = lazyEvaluation(Person.class); \\ 1
		lazyEvaluation.record().setName("newName"); \\ 2
		lazyEvaluation.doItForEach(persons); \\ 1


Jest to rozwinięcie sposobu postępowania z kodem jaki widziałem w mockito. Podejście takie daje ciekawych możliwości. Można na przykład bardziej klarownie budować konstrukcje do sterowania kodem, tak jak to próbowałem robić w poprzednim wpisie (post 2).
Przez chwile miałem wrażenie że odkryłem zupełnie nieznaną ziemie😉, pole do zbudowania czegoś nowego. Już miałem się zabierać do stworzenia swojego open-sourcowego projektu, tak aby udostępnić światu te nowe koncepcje, które naglę teraz stały się osiągalne.
No cóż trochę poszukałem i okazało się że jest coś takiego. W sumie w mockito jest to pewnie z 2 lata (a technologia pewnie dostępna od ponad 5 lat), więc to, że ja na to teraz wpadłem, nie oznacza tego, że inni nie myśleli w ten sposób dużo wcześniej. Projekt ten to lambdaj, a wcześniejszy kod dzięki tej bibliotece da się zapisać tak:

forEach(persons).setName("newName");

W sumie wiedziałem wcześniej o tej bibliotece. Może nawet nieświadomie się nią inspirowałem. Tak więc zatoczyłem koło i odkryłem ją na nowo (bogatszy o wiedzę – co jest stosowanie w środku).
Do prostych zastosowań wygląda to elegancko, ale jak chcę się robić coś bardziej skomplikowanego to kod pisany w ten sposób potrafi wyglądać nieprzyjemnie (to daje pojęcie o tym w jakim kierunku by to wyewoluowało, jeśli chciałbym to sam pisać). Przykład: idea realizacji domknięć lub switch na stringach, z którym sam się próbowałem wcześniej mierzyć (post 1).
Mam jednak jeszcze jedną koncepcje na zrobieniu czegoś w oparciu o opisany tu sposób, ale o tym innym razem, może odkryje, że ktoś już to zrobił🙂.

Kategorie:Java Tags:
  1. Brak komentarzy.
  1. No trackbacks yet.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s

%d bloggers like this: