Wednesday, July 23, 2014

2014-06-26 Clean Code Episode 14, Solid Case Study

Po 5 epizodach poruszających kolejne zasady SOLID przyszła kolej na podsumowanie. Poniżej zestawienie zasad z linkami do relacji:
  1. Single responsibility principle
  2. Open/closed principle
  3. Liskov substitution principle
  4. Interface segregation principle
  5. Dependency inversion principle 
Odcinek sponsorowała firma Seamless, której przedstawiciel - Radek Kozłowski - na początku spotkania przedstawił obszar działalności firmy.
Radek Kozłowski o Seamless. Co robi u nich wujek Bob?!

W podusmowaniu wujek Bob zajmuje się projektem systemu płacowego z epizodu 7. Na podstawie wymagań klienta sporządzono zestaw use case'ów oraz struktur danych opisywanych za pomocą słownika danych (data dictionary). Dodatkowo zidentyfikował 3 aktorów. Na początku designu zajął się modelem use casów z punktu widzenia architektury wysoko poziomowej. Cały proces dość ciężko opisać bez kawałka kodu albo paru rysunków, więc zrobię to minimalistycznie, żeby czasu waszego nie tracić. Celem tego procesu było wydzielenie modułów o pojedynczej odpowiedzialności - SRP. Zasada OCP została zachowana dzięki wydzieleniu interfejsów fabrykujących, dzięki czemu kontrolery nie zależały od konkretnych implementacji use case'ów czy też typów żądań. Zasadę LSP zaprezentował na podstawie potrzeby użycia konkretnego typu, kiedy mamy wiedzę tylko o typie nadrzędnym. W tym wypadku zastosował rzutowanie, zamiast zaśmiecania interfejsu klasy nadrzędnej. ISP zostało przedstawione na przykładzie wcześniej wspomnianych interfejsów fabrykujących, które posiadały metody dla każdego z typów obiektu tworzonego. Sytuację naprawiona dwoma alternatywnymi rozwiązaniami. Pierwsze polega na rozdzieleniu interfejsów a następnie użyciu mniejszych, wymaganych dla danego kontrolera. Drugie rozwiązanie - bardziej dynamiczne - zakłada użycie stringów w celu rozróżnienia na ich podstawie typu potrzebnego obiektu. Zastosowanie DIP wujek pokazał na przykładzie jednego z use case'ów.


SOLID crew of Łódź JUG
Na końcu znalazła się polemika z podcastem 38 na stacku (dostępny tutaj), podczas której wujek Bob wskazuje, że zasady SOLID są jedynie drogowskazem. Często trzeba jakąś złamać, ale należy robić to świadomie. Jest to kolejny sygnał, że zasady są dla ludzi - dobrze je znać, żeby można je było z satysfakcją łamać;)

Na koniec prezentacja małego ficzera na DMCSie - ten dach naprawdę działa!

Schron przeciwatomowy?

Co dalej?

Obecnie organizujemy letnie, luźniejsze JUGi przy piwku. Niebawem pojawi się dokładniejsze info na portalach społecznościowych. Jeśli macie pomysł na prelekcje piszcie na juglodz@gmail.com.

Mobilization

 18 października organizujemy już 4 edycję Mobilization - konferencję skupioną wokół urządzeń mobilnych. Wszystkich zainteresowanych wystąpieniami zapraszamy na call 4 papers. Potrzebujemy również łapek do pomocy (kontakt juglodz@gmail.com). Jest to świetna okazja do poznania wartościowych ludzi oraz firm chętnie przyjmujących programistów.  



PS. Dzięki Pawłowi Włodarskiemu za zdjęcia.



Wednesday, July 9, 2014

2014-06-09 - 33rd Degree - recenzja

Dzięki JUGowi dostałem darmową wejściówkę na 33rdDegree. Kilka słów o tym jak było. Całe wydarzenie miało miejsce w multikinie w Krakowie. Miejsce wydarzenia było dobre: dużo miejsca w salach i na korytarzach. Dodatkowo przed kinem został ustawiony specjalny namiot gdzie można było spędzać czas pomiędzy talkami. Prezentacji było mnóstwo wszelakiego rodzaju, każdy oprócz programisty c++ znalazłby coś dla siebie – było nie tylko o javie ale i o javascripcie, sqlu czy objective-c (tego ostatniego unikałem jak ognia). Była też to prawdopodobnie pierwsza konferencja, jak chwalili się organizatorzy, w której można było posłuchać o Swiftcie. Na konferencji często był poruszany temat programowania reaktywnego i funkcyjnego, wyraźnie jest to nowy trend. Ciesze się z tego powodu ponieważ jestem bardzo tymi tematami zainteresowany, tym bardziej, że będę pisał pracę inżynierską na ten temat.

Kilka ciekawszych prezentacji:

Mary Poppendieck - Think For Yourself
Początkowo myślałem, że będzie to kolejna nudna abstrakcyjna prezentacja z serii "jak być lepszym developerem". O ile nie pomyliłem się z tematem, to na pewno nie była nudna. Prezentacja była na temat odpowiedzialności developerów za to, co robią. Nie powinniśmy ślepo podążać za sztywnymi wymogami, tylko pomyśleć czego tak naprawdę oczekuje klient i jak możemy stworzyć produkt który mu się spodoba. Prezentacja była dobrze zrobiona a prelegent mówił ciekawie i sprawiał wrażenie kompetentnego.

Ted Neward - Managers are from Mars, Developers are from Venus
Jak tytuł wskazuje, odwieczny konflikt developera i managera. Prelegent opisuje problemy występujące pomiędzy tymi dwoma gatunkami – jak powstają i jak można im przeciwdziałać. Prezentacja miała w sobie dużo humoru, dzięki czemu była ciekawa. Szczególnie zapadła mi w pamięć historia projektu PoC która bardzo się zarządowi spodobała i weszła do produkcji.

Kito Mann - JavaScript, the Assembly Language of the Web
Prezentacja która mnie bardzo ciekawiła. To interesujące, jak javascript, język wysokopoziomowy i dynamiczny stał się „assemblerem” internetu. Na prezentacji dużo było o kompilatorach, które kompilują inne języki do Javascriptu. Okazuje się, że większość znanych nam języków posiada jakąś bibliotekę lub mechanizm który pozwala na kompilowanie go do javascriptu. Z drugiej strony mamy języki pod to dedykowane: Dart, TypeScript (podobno Microsoft zrobił w końcu coś dobrze) i znany z prezentacji o Playu CoffeScript.

Maciej Bendkowski - Eclipse Orion - New and Noteworthy
Prezentacja o dość ciekawym produkcie – Eclipse Orion. Jest to IDE przeglądarkowe. Nie musimy niczego instalować, odpalamy przeglądarkę, gdziekolwiek i na czymkolwiek i możemy programować. Nasze ustawienia i kod trzymane są na serwerze.

Małgorzata Janczarska - JavaScript Bloopers – most common developers’ mistakes
Bardzo fajna prezentacja o problemach javascriptu. Z jednej strony, język prosty łatwy do nauki. Z drugiej strony, często zachowuje się w sposób bardzo ciężki do przewidzenia, początkujący developerzy mogą spędzić długie godziny na debugowaniu. Prelegent omawiał różne pułapki jakie zastawia na nas język i które mogą zaskoczyć nawet doświadczonych programistów.


Wyjazd bardzo udany, zwiedziłem też trochę Kraków. Jeśli za rok znów wygram wejściówkę to na pewno pojadę :)