czwartek, 25 grudnia 2014

Świeżak w korpo - czyli różnice między tym co na studiach, a w pracy

Pierwsze kroki...


Od pół roku pracuję w pewnej firmie, którą chyba można nazwać korporacją. W dziale, w którym jestem zajmujemy się głównie rozwijaniem, dostosowywaniem i sprzedażą sporej aplikacji dla różnych, znanych marek takich jak Airbus, Volkswagen, Audi, Renault, Adidas, Simens, Apple itp. itd.
Jest to moja pierwsza praca na etat. Wcześniej wprawdzie miałem jakieś praktyki, ale odbywałem je w małej ok. ośmio-osobowej firmie, gdzie połowicznie robiłem strony webowe, a połowicznie grafikę, więc to się nie liczy :P
Powoli dochodząc do tematu, który zamierzałem zawrzeć w tym poście, chciałbym przedstawić Wam moje subiektywne porównanie, tego z czym mamy do czynienia na studiach, a tym z czym trzeba się mierzyć podczas rozwijania oprogramowania w pracy. Oczywiście, tak jak sugeruje temat wpisu, jestem jeszcze absolutnym nowicjuszem w kwestii pracy programisty w większej firmie, ale mimo to, przez te pół roku parę rzeczy od razu rzuciło mi się w oczy.

"Jak będziesz po riwiu, to zobacz czy się bilduje, zmerdżuj zmiany z repo i zaczekinuj" - czyli programistyczno-korporacyjny slang.

sobota, 6 grudnia 2014

Wzorce projektowe #03 - Metoda Wytwórcza (ang. Factory Method)

Cześć, tym razem postanowiłem przybliżyć sobie i Wam wzorzec metody wytwórczej. Jest on relatywnie często wykorzystywany i wplatany w inne wzorce - głównie wzorce fabryki. Myślę więc, że warto go poznać :)

Idea wzorca: 

Metoda wytwórcza należy do grupy wzorców konstrukcyjnych. Określa interfejs do tworzenia obiektów i przyjmuje na siebie odpowiedzialność za ich produkcję. Jednocześnie robi to w sposób elastyczny, to znaczy, że łatwo można dodać kolejny typ produktu do tworzenia. Dzięki temu aplikacja może zachować modułową strukturę.

Implementacja:

Generalnie implementacja opiera się na stworzeniu klasy kreującej różne obiekty na podstawie przesłanego parametru, jednak czasem może wystąpić potrzeba aby taka klasa dla tych samych parametrów tworzyła nieco inne produkty w zależności od kontekstu, dla tego warto stworzyć również interfejs określający funkcjonalność kreatora, aby w razie potrzeby móc dorobić kolejne implementacje opierające się na tym samym interfejsie.

Tutorial:

Tym razem tutorial podzieliłem na dwie części.
Pierwsza z nich to krótki, 5-cio minutowy filmik, w którym staram się przybliżyć ideę wzorca na prostym przykładzie, podpartym diagramami. Zaczynamy od naiwnej implementacji bez wzorca, a następnie modyfikujemy pomysł z użyciem metody wytwórczej, tak aby aplikacja stała się przejrzystsza i bardziej elastyczna.
Druga część to implementacje wcześniej wspomnianego przykładu. Przy okazji pokazuję również, trochę niestandardową metodę kodowania... zresztą, zobaczcie sami :)

Pierwsza część (koncepcja + wizualizacja):
Druga część (implementacja):