PROGRAMOWANIE

Memoizacja

Jest to forma „cachowania” wywołań funckji/metod. Jest szczególnie przydatna, jeśli wywołania funkcji/metod zajmują dużo czasu. Przykład implementacji (zaciągnięty z https://dzone.com/articles/java-8-automatic-memoization) Przykładowe użycie Jest to trywialny przykład wykorzystania, ale pokazuje działanie klasy Memoizer. Normalnie powinno się „memoizować” tylko funkcje/metody, które „pochłaniają” duże ilości zasobów. Wersja w TypeScript Warto zajrzeć 1. https://dzone.com/articles/java-8-automatic-memoization2. https://en.wikipedia.org/wiki/Memoization

Iterator wewnętrzny i zewnętrzny

Iterator może występować w dwóch formach – wewnętrznej lub zewnętrznej. Iterator wewnętrzny To taki, którego przebiegu nie kontrolujemy sami – dostarczamy tylko algorytm, który ma zostać wykonany dla każdego elementu. Przykładem takiego iteratora jest metoda forEach interfejsu Iterable. A z racji tego, że każda kolekcja implementuje ten interfejs, to na każdej kolekcji możemy skorzystać z …

Iterator wewnętrzny i zewnętrzny Czytaj dalej »

S.O.L.I.D.

SOLID – to zbiór reguł zaproponowanych przez Roberta C. Martina, mających na celu poprawienie jakości kodu. S – Single responsible principle – zasada pojedynczej odpowiedzialności Klasa/moduł/metoda powinna robić jedną rzecz (nie rozmieniać się na drobne). O – Open-Closed principle – zasada otwarty-zamknięty Klasa powinna być otwarta na rozszerzenia, ale zamknięta na modyfikacje. Przykład klasy niespełniającej …

S.O.L.I.D. Czytaj dalej »

@SuppressWarnings – co tutaj można wpisać?

@SuppressWarnings w dużym skrócie służy do „wyciszania” ostrzeżeń. Tylko, że jest tutaj mały problem – parametryzacja jest dokonana za pomocą ciągów znaków (String), co nie ułatwia korzystania z tej adnotacji. Przyjrzymy się tutaj oficjalnym literałom jak i tym wspieranym przez IntelliJ IDEA. Wspierane literały w Java 8 Jako że, literały są wspierane per wersja, będę …

@SuppressWarnings – co tutaj można wpisać? Czytaj dalej »

Przegląd kodu – Code Review

Cel nadrzędny Nadrzędnym celem jest ta sama lub wyższa jakość kodu – nie chcemy na pewno aby kod stracił na jakości. Co sprawdzamy? 1. Czytelność kodu2. Względy bezpieczeństwa3. Pokrycie testami4. Czy kod jest zgodny z architekturą aplikacji5. Czy wykorzystywane są re-używalne komponenty Pytania które warto sobie zadać 1. Czy rozumiem co robi kod?2. Czy kod …

Przegląd kodu – Code Review Czytaj dalej »

Meta adnotacje w Javie

@Target Określa na jakich elementach można będzie używać adnotacji. Java definiuje ponad 10 opcji. Najczęściej spotykane to:-ElementType.TYPE – jeśli chcemy aby adnotacja mogła być używana na klasach, interfejsach, enumeracjach czy rekordach-ElementType.METHOD – jeśli chcemy aby adnotacja mogła być używana na metodach-ElementType.FIELD – jeśli chcemy aby adnotacja mogła być używana na polach klasy @Retention Określa w …

Meta adnotacje w Javie Czytaj dalej »

Collections.forEach vs Stream.forEach

Obydwie metody zrobią dla nas to samo. Z tym, że wersja Collections.forEach skorzysta z iteratora kolekcji (jeśli takowy jest) a wersja Stream.forEach już nie. Co to zmienia? To, że używając Collections.forEach załóżmy na liście będziemy mieli gwarancję kolejności wykonania, niestety używając Stream.forEach już takiej nie mamy. Warto zajrzeć

Kompilator, asembler i linker

Kompilator Kompilator – tłumaczy z języka wysokiego poziomu (takiego jak C++ czy Java) do języka niskiego poziomu (często do języka Asembler, czy w przypadku Javy do pośredniej formy – kodu bajtowego). Asembler Asembler – tłumaczy z języka niskiego poziomu do języka maszynowego (postaci binarnej). W tym momencie otrzymujemy binarną reprezentację naszego programu (nie jest to …

Kompilator, asembler i linker Czytaj dalej »

DRY, KISS, YAGNI

DRY – Don’t Reapeat Yourself Tłumacząc wprost – nie powtarzaj się. Chodzi tutaj o nie powtarzanie się, zarówno jeśli chodzi o kod, jak i o funkcjonalności (nie powinny istnieć dwie klasy robiące to samo, tylko w trochę inny sposób). KISS – Keep It Stupid Simple Tłumacząc wprost – niech to będzie głupio proste. No cóż, …

DRY, KISS, YAGNI Czytaj dalej »