DevCezz

Programistyczny blog dla Ciebie

Wskazówki i porady

Czy MapStruct rozleniwia?

Na początku bieżącego roku napisałem 3 artykuły na temat MapStruct („Podstawy biblioteki MapStruct”, „Użycie wzorca dekorator w MapStruct”, „Różne przypadki wykorzystania biblioteki MapStruct”). Wtedy za cel postawiłem sobie, aby przybliżyć Tobie ideę stojącą za tą biblioteką. Dzisiaj natomiast chciałbym przestrzec…

Wzorzec Transactional Outbox

Tworzone aplikacje często muszą informować swoich użytkowników o jakimś zdarzeniu poprzez SMS czy email. Powodem może być wystawienie faktury, potwierdzenie złożenia rezerwacji czy też nowa promocja. Co jednak w przypadku, gdy chcemy mieć pewność, że wiadomość nie dotrze do adresata…

Feature envy, czyli zazdrość metody o funkcje

Czym byłoby ludzkie życie bez emocji, a zwłaszcza takiej jaką jest zazdrość? Można uważać, że bez niej żyłoby nam się po prostu lepiej. Ale to nie pora i miejsca na takie filozoficzne rozkminy. Dlaczego jednak wspominam o zazdrości? Ponieważ możemy…

Prawo Demeter – jak uchronić kod przed katastrofą

Zdarzyło Ci się spotkać albo, co gorsza, samemu napisać kod o następującej strukturze bank.getAccountingDepartment().getAccountingTeam().getAccountant().process(invoice)? Ewidentnie jest z nim coś nie tak. Nie dość, że grzebie on w wewnętrznej implementacji wielu klas to jeszcze ma potencjalnie aż 3 miejsca na rzucenie…

GRASP – garść zasad wytwarzania oprogramowania

W świecie programistycznym istnieje wiele wskazówek jak tworzyć dobre oprogramowanie. Jedną z nich jest znany (i zapewne lubiany) mnemonik SOLID, o którym powstało wiele artykułów. Opisuje on podstawowe zasady jakich powinno się przestrzegać podczas programowania. Jeśli, więc oprze się swój…

W czym pomoże nam Value Object?

Value Object, jak sama nazwa wskazuje, jest obiektem przechowującym jakąś wartość. Ta koncepcja pomaga nam nadać znaczenie danej liczbie bądź literałowi czy też ich grupie. Zastanów się czym jest dla Ciebie cyfra 3. Jest to miesiąc marzec? Ilość produktów? A…

Dependency Injection

Podczas wieczornej przebieżki myślałem o tym jak ugryźć temat opisania Dependency Injection (DI). Nagle usłyszałem to zdanie, które chyba każdy z nas krzyczał będąc dzieckiem. “Mamo, rzuć picie!” 😂 I wtedy wyobraziłem sobie sytuację, w której to młody adept sztuki…

Inversion of Control

Pewien aspirujący aktor dostał się na przesłuchanie do wielkiej sztuki. Jest podekscytowany, że może wziąć w nim udział. Przygotowywał się do tej chwili przez całe życie. Pomyślał: “Mój amerykański sen w końcu się ziści!”. 🌟 Ubrał się w najlepszą koszulę,…

SOLID – Dependency inversion principle

Ostatnią zasadą mnemoniku SOLID jest Odwrócenie Zależności. Polega ona na tym, żeby nie uzależniać modułów wysokiego poziomu od modułów niskiego poziomu. Należy wstawić pomiędzy nie abstrakcję, która nie może zależeć od detali, ale to detale powinny zależeć od niej. Prościej…

SOLID – Interface segregation principle

Przedostatnia zasada mnemoniku SOLID. Według tej wytycznej interfejsy należy odpowiednio segregować. Nie jest zalecane tworzenie interfejsu “od wszystkiego”. Powinno się je konstruować w taki sposób, aby miały tylko jedną odpowiedzialność (Single Responsible Principle). Klas implementujących dany interfejs nie należy zmuszać…