#BeEffective – Zastosowanie wzorca Builder (budowniczego)

W pierwszym wpisie z cyklu #BeEffective poruszony został temat statycznych metod fabrycznych i konstruktorów. Posiadają one jednak pewną wspólną wadę – nie są optymalne do obsługi wielu parametrów opcjonalnych. Rozważmy przypadek klasy reprezentującej etykiety z informacją o składnikach odżywczych. Taka etykieta z pól wymaganych posiada wielkość porcji, ilość porcji na opakowanie oraz liczbę kalorii na 100g produktu. Posiada także wiele pól opcjonalnych – od prostego podziału węglowodany / białka / tłuszcze, po rozbite na części pierwsze wszystkie mikro i makroelementy. Większość produktów niezerowe wartości ma tylko dla kilku z pól opcjonalnych. Czytaj dalej #BeEffective – Zastosowanie wzorca Builder (budowniczego)

Wyjątki w Javie

Każda aplikacja zawiera błędy. Tak samo w każdej aplikacji pewne ścieżki są nieprzewidziane. Zadaniem zespołu tworzącego aplikację jest znaleźć te miejsca w kodzie i odpowiednio je obsłużyć. W ten sposób można płynnie dojść do javowego mechanizmu wyjątków, który pomaga programistom w obsłużeniu błędnych ścieżek w algorytmach.

Czytaj dalej Wyjątki w Javie

Nowy cykl – #BeEffective – Statyczne metody fabryczne zamiast konstruktorów

Dość późno w mojej karierze dotarłem do książki, którą każdy middev powinien przeczytać, bo dopiero teraz. Ten tytuł to oczywiście Java. Efektywne programowanie od Joshuy Blocha. Tym samym otwieram cykl #BeEffective, w którym omawiać będę kolejne lekcje tego podręcznika. W końcu, jak stoi w przedmowie tejże książki – na podstawie tej książki możesz zaprojektować własny kurs. Czytaj dalej Nowy cykl – #BeEffective – Statyczne metody fabryczne zamiast konstruktorów

Czy na pewno tu nie będzie nulla?

java.lang.NullPointerException. Każdy go zna, każdy uwielbia, a debugując enterprisową aplikację (napisaną oczywiście przez kogoś innego, my byśmy takiego błędu nie popełnili!), natrafiwszy na taki zapis w logach można dostać białej gorączki. I niby każdy wie, że powinno się stosować null-checki w newralgicznych miejscach. Tak samo jak każdy wie, że jakby co to są Opszonale. A i tak w tym jednym jedynym miejscu ani null-checka ani typu Optional nie będzie, bo przecież tam i tak nie będzie nulla. Zapraszam do lektury. Czytaj dalej Czy na pewno tu nie będzie nulla?

Kurs Springa – część 3 – Wprowadzanie danych inicjalnych do aplikacji

Każda aplikacja webowa potrzebuje danych, żeby przynajmniej działać. Bez danych użytkownika nie będzie można przecież przetestować logowania, edycji, czy wyświetlania tychże. Kroki do uzyskania są dwa – sumienne wklepywanie danych po każdorazowym uruchomieniu aplikacji (rejestracja, dodawanie np. faktur, innych użytkowników, ról systemowych etc.), lub dodanie do aplikacji danych inicjalnych, danych testowych. Czytaj dalej Kurs Springa – część 3 – Wprowadzanie danych inicjalnych do aplikacji

Zmiany w interfejsach dzięki Javie 8

Java 8 przyniosła wiele nowości. Według wielu, po wersji 5 języka, była to najbardziej rewolucyjna aktualizacja. I choć od wprowadzenia tejże minęło już kilka ładnych lat – wciąż wiele osób gubi się próbując zapanować nad niektórymi zmianami. Dziś na tapet wezmę zmiany w interfejsach, które pojawiły się wraz z aktualizacją Javy z 2014 roku. Czytaj dalej Zmiany w interfejsach dzięki Javie 8

Kurs Springa – część 2 – adnotacje JPA i baza danych.

Wiemy już jak rozpocząć projekt za pomocą Spring Initializr, teraz zajmiemy się bazą danych i standardem JPA. JPA (Java Persistence API) to tak zwany standard ORM, czyli mapowania obiektowo – relacyjnego (object – relational mapping). Mapowanie to jest sposobem odwzorowania struktury obiektowego systemu na relacyjną bazę danych. Polega to na tym, że w relacyjnej bazie danych mamy tabele, które są ze sobą powiązane kluczami (połączenia takie nazywane są relacjami), natomiast w systemie obiektowym – są to obiekty ze swoimi polami.

Czytaj dalej Kurs Springa – część 2 – adnotacje JPA i baza danych.

Kurs Springa – część 1 – Spring Initializr

Tym wpisem rozpoczynam całą serię tekstów, które można określić jako Kurs Springa. Na pierwszy ogień idzie konfiguracja Springowego projektu za pomocą Spring Initializr.

Czytaj dalej Kurs Springa – część 1 – Spring Initializr

Klasy abstrakcyjne i interfejsy – czy są potrzebne?

Klasy abstrakcyjne i interfejsy to jedna z podstaw programowania obiektowego. Prawidłowe się nimi posługiwanie odróżnia dobrego programistę od zwykłego klepacza kodu. Jest to też powód, dla którego często pytania o tę dziedzinę padają na rozmowach kwalifikacyjnych. Co nam dają te konstrukcje?

Czytaj dalej Klasy abstrakcyjne i interfejsy – czy są potrzebne?

Kolekcje w Javie, czym się od siebie różnią?

Kolekcje są strukturami danych zorientowanymi na przechowywanie obiektów. Kolekcje w Javie dzielą się na listy, mapy i zbiory. Mimo tego, że tablice także służą do przechowywania elementów, to pod nazwą kolekcje uznaje się te struktury, które implementują (pośrednio) interfejs java.util.Collection lub java.util.Map. Można zatem założyć, że kolekcje to struktury nie tylko przechowujące obiekty, ale także udostępniające mechanizmy pozwalające na wstawianie, pobieranie, przeglądanie, czy usuwanie z nich obiektów. Przejrzymy interfejsy java.util.Collection oraz java.util.Map wraz z różnicami między ich implementacjami.

Czytaj dalej Kolekcje w Javie, czym się od siebie różnią?