Witki mi opadły

Jeszcze raz o nazewnictwie, bo dziś trafiłem w kodzie na coś takiego: Listing 1. Potworek findPxxSxxInPxxSxxListByCxxIdSxxsIdSxxCxxxxIdUxxxxTp wyiksowałem rzeczy, które są biznesowo istotne, ale nie straciło to nic ze swojego uroku. Metoda jest prywatna w danej klasie, bo takie potworki czasami trafiają się w Spring Data, i przyjmuje trzy parametry. Zwraca jakiś tam obiekt biznesowy. Ja […]

RealizmWJavieNieUłatwiaPisaniaAniRozumieniaKoduStworzonegoPrzezInnychProgramistów – czyli Lew Tołstoj się przekwalifikował

W poprzednim wpisie omówiłem, krótko, bo krótko, problem skracania nazw w kodzie. Dziś poruszę problem zbyt długich nazw. One też nie są dobre. Co oznacza „nazwa opisowa”? No właśnie… Czy pojęcie to oznacza nazwę, która jest długa, precyzyjna i w najmniejszych szczegółach oddająca co dzieje się w środku? A może nazwa opisowa niesie ze sobą […]

PrtDtRefStsMngmnt, czyli jak przywołać Cthulhu w Javie

Nowy rok, nowe błędy. Wpis miał być o czymś innym, tzn. miało to być podsumowanie poprzedniego i plany na obecny rok, ale jak to w życiu bywa, plany poszły się paść. Będzie o czymś, moim zdaniem, ciekawszym. Będziemy przyzywać wielkich przedwiecznychW. Kontekst Mając możliwość obcowania z różnymi systemami, zauważyłem pewną prawidłowość. Im bliżej biznesu umieszczamy […]

Część wspólna zbiorów z Guavą

Szybkie rozwiązanie problemu opisanego tutaj. Mamy dwa zbiory A i B, chcemy sprawdzić, czy wszystkie elementy ze zbioru A są obecne w zbiorze B. Najprościej jest to zrobić w następujący sposób: Listing 1. Wykorzystanie API public class SetsIntersectionExample { public static void main(String[] args) { // Smoki i gołe baby Fairy fairy = Fairy.create(); Set<String> […]

Z Javy 8 na Javę 9, czyli co wybuchnie

Małe rzeczy zawsze cieszą. Jedną z nich jest możliwość bezproblemowego migrowania z Javy 8 na Javę 9. Fajnie by było, gdyby taka migracja przeszła bez większych zgrzytów, dlatego warto czasami rzucić okiem, co wypluwa nam nasz kompilator. A wypluć może on na przykład: Listing 1. Co nam mówi kompilator Warning:(30, 53) java: ‚_’ used as […]

Kiedy wypakować Optional

Odpowiedź brzmi najlepiej nigdy. Pandora już raz rozpakowała Optionala i do dziś dzieci się o tym uczą w szkole. Zresztą można sobie, to opisać w następujący sposób. Tygrys w klatce Wyobraźmy sobie, że mamy do dyspozycji Tygrysa. Niech ma na imię Bonawentura. Listing 1. Nasz tygrys public class Tiger { private final String name; private […]

Sezon na przetwory zakończony, czyli wspomnienie po Confiturze 2017

Jak już wcześniej pisałem w tym roku na Confiturę pojechałem jako prelegent. Mam nadzieję, że moja prezentacja się spodobała. A teraz kilka słów o prezentacjach innych 🙂 Keep IT clean: mid-sized building blocks and hexagonal architecture in real life – Jakub Nabrdalik Świetna prezentacja poświęcona temu, jak wykorzystać widoczność pakietową do modularyzacji swojego kodu. Modyfikator […]

Patatajam na Confiturę po raz wtóry

W zeszłym roku zaufaliście mi i mogłem wystąpić na scenie Confitury. Skończyło się to jak się skończyło 🙂 W tym roku spotkamy się raz jeszcze. Tym razem będę mówić o JUnit 5 🙂 Dziękuję za zaufanie i wiarę, że dam radę. Kod jest dostępny na licencji MIT. Jednak niektóre rozwiązania mogą być objęte inną licencją. […]

JUnit 5 – założenia i twierdzenia

Istotą każdego testu jest sprawdzenie jakiegoś twierdzenia. Testy bez asercji są jak porno bez fabuły. Wszystko się jebie i w sumie nie wiadomo dlaczego. Dziś przyjrzymy się jakie możliwości w tym zakresie oferuje nam JUnit 5. Założenia Czyli to, co występuje pod nazwą Assumptions. Mechanizm ten znamy już z poprzedniej wersji frameworku i w nowej […]

JUnit 5 – Rozszerzenia i wstrzykiwanie zależności, część 2

W poprzednim wpisie zajmowaliśmy się standardowymi implementacjami ParameterResolver. Na zakończenie wspomniałem, że własna implementacja wymaga konfiguracji na poziomie silnika testów. Takie podejście jest uciążliwe i wiąże się m.in. z implementacją własnego silnika lub hackowaniem istniejącego. To jest trochę krzywe. Twórcy biblioteki JUnit 5 mając świadomość, że takie rozwiązanie jest kiepskie, przygotowali mechanizm rozszerzeń. Rozszerzenia można […]