Refaktoryzacja – wydzielenie metody szablonowej

Jedna z najprostszych refaktoryzacji wprowadzających wzorzec projektowy do kodu. Wzorcem tym jest metoda szablonowa (template method), a refaktoryzacją wydzielenie metody (extract method). Czyli coś dla n00b-ów 😉 Od czego zaczynamy Poniżej przykładowy kod, który w tym przypadku sprawdza czy dane wyrażenie przyjmie obiekt danego typu Listing 1. Sytuacja wyjściowa public final class SearchHelper { private […]

S.O.L.I.D.ne programowanie – część 5, czyli z plebsem nie gadam

S.O.L.I.D.ne programowanie – część 0, czyli wstęp S.O.L.I.D.ne programowanie – część 1, czyli monogamia S.O.L.I.D.ne programowanie – część 2, czyli spoufalamy się S.O.L.I.D.ne programowanie – część 3, czyli podkładamy świnię S.O.L.I.D.ne programowanie – część 4, czyli apartheid Pomysł na codzienne pisanie na blogu ma pewne zalety. Na przykład można dokończyć coś co pisałem… 7 lat […]

Interfejsy z implementacją w Javie 8

Zastanawialiście się kiedyś po co w Javie 8 wprowadzono interfejsy z (domyślną) implementacją? Oczywiście można powiedzieć, że dzięki temu mamy miksiny/domknięcia/traity czy jak to tam zwał w zależności od punktu odniesienia. Ale czy taka konstrukcja nie jest przez przypadek rozwiązaniem znacznie poważniejszego problemu projektowego? Jak zrobić API? API, czyli po ludzku interfejs aplikacji/biblioteki/narzędzia itp. Java […]

Maszyna stanowa – zagada projektowa

Ciekawa, moim zdaniem, łamigłówka i zagadka projektowa. Niby każdy wie, ale nigdzie nie znalazłem ładnego wytłumaczenia. Mamy sobie prostą maszynę stanową w postaci enuma wzbogaconego o metodę sprawdzającą dopuszczalność przejścia: listing 1. enum State, czyli maszyna stanowa public enum State { A, B, C, D; private List<State> validChanage; static { A.validChanage = Arrays.asList(B); B.validChanage = […]

Najbardziej pojebane wzorce projektowe

Noblesse oblige… III Singleton Co w nim pojebanego? Jest to jednocześnie wzorzec i antywzorzec. Szczerze nienawidzony przez wszystkich, a jednocześnie w wielu frameworkach z lubością używany (nie w prost, ale zawsze). Do tego jego prawidłowa implementacja w znacznej mierze opiera się o dobrą wolę programisty i zaufanie do użytkownika, że nie będzie grzebał w klasie […]

Zagadka projektowa 2

Kolejna zagadka najpierw jednak rozwiązanie poprzedniej zagadki. Który listener lepszy Oba są dobrym rozwiązaniem. Wybór powinien nastąpić w wyniku analizy polegającej na odpowiedzi na pytanie: Kto powinien decydować o tym, że dane zdarzenie zakończyło się sukcesem albo porażką? Jeżeli decyzję powinien podjąć klient to lepszym jest listener z listingu 1. Jeżeli to my decydujemy to […]

Zagadka projektowa

Dziś będzie „lajcik”. Mam dla was zagadkę projektową. Załóżmy, że mamy zaprojektować klasę służącą do komunikacji z pewną usługą. Przy czym usługa ta odpowiada na zadane pytania w taki sposób, że odpowiedź może interesować wiele obiektów w ramach aplikacji. Przykładem może być tu proste wciśnięcie przycisku do którego możemy przypisać wiele listenerów. Generalnie zatem mówiąc […]

Ekstremalna obiektowość w praktyce – część 1 – tylko jeden poziom zagłębienia na metodę

Część 0 Witam w pierwszej części cyklu Ekstremalna Obiektowość w Praktyce. Z głośników płynie sobie Another Brick on the Wall part II, a my zajmiemy się pierwszą z zasad Jeffa Baya. Brzmi ona Tylko jeden poziom zagłębienia na metodę Jest to jedna z prostszych zasad, której wprowadzenie wymaga tylko umiejętnego wykorzystania refaktoryzacji typu Extract Method. […]

Panie Majster…. teraz bangla!

W sobotę była sobie czwarta już Warsjawa. Druga obok Confitury/Javarsowii konferencja javowa organizowana przez warszawskiego JUGa. Konferencja o tyle ciekawa, że nastawiona na praktyczne zastosowanie posiadanej wiedzy i generalnie silnie „uwarsztatowiona”. W tym roku były cztery ścieżki: Warsztaty „Google Web Toolkit krok po kroku”, prowadzący Paweł Cesar Sanjuan Szklarz. Warsztaty „Meet my Android”, prowadzący Mateusz […]

Praca z kodem zastanym – cz. I podział kodu

Każdy z nas prędzej czy później będzie musiał poświęcić swój czas na pracę z kodem zastanym. Angielskojęzyczna część branży ma nawet taki ładny termin „Legacy Code”, który nie obejmuje jednak wszystkiego o czym chcę pisać. W tym miejscu zajmiemy się podziałem kodu zastanego na kilka sposobów. Każdy z nich będzie opisywał kod w innym kontekście […]