Kwi
18
2019

Wzorce projektowe w świecie WordPressa – wprowadzenie

Mam taki pomysł aby opublikować na dev.WPzlecenia cykl wpisów przedstawiających czym są wzorce projektowe i jak ich można używać w kontekście WordPressa – tworzenia wtyczek i motywów do WP. Każdy cykl musi się jednak zacząć od słowa wstępu, co właśnie niniejszym czynię.

Równocześnie – znając siebie – się obawiam, że na wstępie się może skończyć :) Gdy już napiszę wstęp, odłożę na wieki opis pierwszego wzorca i na tym się skończy. Tak więc proszę wszystkich o odzew czy taki cykl jest w ogóle potrzebny. Jeśli potwierdzicie taką potrzebę, zapewne tym chętniej wrócę do tego tematu.

No i jeszcze słowem wstępu do wstępu: jeśli mnie znacie, zapewne wiecie, że nie będzie to typowy poradnik. Napiszę go nieco z humorem, czasem coś uproszczę, a czasem nawet was okłamię. Take it or leave it (czyli po polsku, bierzcie to z dobrodziejstwem inwentarza).

Czym są wzorce projektowe

W najprostszej definicji: czymś trudnym. Jeśli czytasz ten poradnik, a tym bardziej czytasz go po przeczytaniu kilku innych poradników i nie zrozumieniu czym są wzorce, zapewne zgodzisz się z taką definicją.

A w definicji ciut mniej subiektywnej: wzorce projektowe to przyjęte i zaakceptowane przez jakąś (znaczącą) część społeczności programistów sposoby na rozwiązanie typowych programistycznych problemów. To sposób jak skomponować składniki naszego kodu (najczęściej klasy i obiekty, ale nie jest to warunek konieczny, choć najczęstszy) tak by rozwiązywały jakiś problem i – co chyba wg mnie ważniejsze jest we wzorcach – inni programiści wiedzieli w miarę od razu z czym mają do czynienia.

Jeśli bowiem jesteś samotnym, początkującym programistą, nie musisz znać i stosować wzorców. To znaczy: o wiele lepiej będzie jeśli będziesz je znał, ale wszystko po kolei. Nie da się nauczyć wzorców jeśli nie zna się kilku innych wcześniejszych podstaw.

Jeśli jednak pracujesz w zespole, zapewne prędzej lub później usłyszysz zdanie podobne do:

Dodałem do naszej wtyczki funkcjonalność X. Generalnie rozłożyłem to na kilka klas wg wzorca strategia, jak spojrzysz do Y to tam jest wzorzec proxy, który opakowuje te zewnętrzne API z którym musimy się komunikować.

Doświadczony programista

Niewiele to mówi początkującemu programiście, ale właśnie: taki jest język senior developerów.

Ok, zatem zakończmy moje wyjaśnianie czym są wzorce w tym miejscu. Też macie wrażenie, że nic nie wyjaśniłem? ;)

Wzorce projektowe są trudne

Przeczytałem wiele poradników i nawet kilka książek odnośnie wzorców projektowych i dopiero gdy trafiłem na stwierdzenie, że wzorce projektowe są trudne, wszystko stało się… prostsze. Zatem już na wstępie chcę Was poczęstować tym samym stwierdzeniem.

Też tak macie, że uczyliście się wzorców (lub uczycie się) i co chwila czujecie się jakbyście trafili do innego kraju, w którym wszyscy mówią w zupełnie innym języku?

Metoda wytwórcza to kreacyjny wzorzec klasowy, którego celem jest dostarczenie interfejsu do wytwarzania obiektów i wywołanie u ciebie ataku paniki oraz obniżenie samooceny, bo nigdy nie skumasz tego zdania, ty kiepski programisto.

A potem jest wykres UML, który rozumie się sam przez siebie, więc dalszy opis jest zbędny

Widzieliście takie coś wiele razy, co nie? :) Niby programujecie już od 5 czy 10 lat, czujecie się pewnie w tym co robicie, pętle piszą wam się same, a funkcje zawsze zwracają to, co potrzeba, ale trafiacie na opis wzorców i bum: okazuje się, że tak naprawdę jesteście debilami.

No więc spokojnie: tak się czują wszyscy, którzy mają IQ niższe od 130 (czyli znaczna większość społeczeństwa). Wszystko z wami jest w porządku.

Wzorce są trudne. Doskonale opanowaliście czym są pętle, funkcje, może nawet klasy i obiekty, ale wzorce projektowe to wyższy poziom abstrakcji. To sposób w jaki należy ułożyć te pętle, klasy, funkcje i obiekty. Język to opisujący jest inny od języka opisującego języki programowania i to normalne, że słysząc go pierwszy raz, czujesz się jak na lekcji węgierskiego dla zaawansowanych.

We wzorce trzeba stopniowo się zanurzać. I zanurzać się wiele razy.

Jak uczyć się wzorców

Jako, że już sobie wytłumaczyliśmy, że jedno przeczytanie definicji wzorca to za mało, jak zatem się tego nauczyć?

Osobiście polecam uczenie się na wiele sposobów i z wielu źródeł. Ten mój poradnik to będzie wciąż za mało.

Po pierwsze nie ucz się wszystkich wzorców na raz. Wiele osób sobie zakłada, że w tydzień opanują wszystkie wzorce, a to jest zwyczajnie niemożliwe.

Zapoznaj się z pierwszym wzorcem z jednego źródła, a potem poszukaj więcej na jego temat. Każdy poradnik i każda książka wytłumaczą ci go w inny sposób i zobaczysz, że prędzej czy później coś w twojej głowie zaskoczy.

I gdy już zaskoczy, jak najszybciej „przejdź od słów do czynów”. Jeśli poczujesz, że już wiesz, że już „acha!” pomyśl gdzie jeszcze możesz zastosować ten wzorzec (w przykładzie innym niż w przeczytanych źródłach).

I zastosuj go. Może masz już kod, który dałoby się przepisać z zastosowaniem wzorca? Więc zrób to! Refaktoring jest nudny i podobno nigdy się nie udaje, ale spróbuj. Nie musi się udać ale przynajmniej zdobędziesz bardzo ważne doświadczenie.

Po co ja piszę ten poradnik

Zapewne zauważyłeś, że jest stosunkowo mało poradników odnośnie wzorców w języku PHP. A już szczególnie bardzo trudno znaleźć cokolwiek z nakierowaniem na programistów WordPress. To z jednej strony dość dziwne, zważywszy jak popularnym środowiskiem WordPress jest, a z drugiej strony też trochę tłumaczy dlaczego WordPress ma tak kiepską opinię: spora część kodu, szczególnie zewnętrznych wtyczek czy motywów nigdy wzorców nie widziała, a ich autorzy wykorzystują autorskie dziwadła do rozwiązywania popularnych problemów. Różnie to wychodzi, ale jedno jest pewne: nie bez powodu powstały wzorce. To kanoniczny, wielokrotnie przedyskutowany sposób rozwiązywania problemów w kodzie. Są dość małe szanse, że ktoś kto nigdy nie spotkał się ze wzorcami rozwiąże ten problem lepiej. Najczęściej będzie gorzej i pokracznie.

Dlatego piszę ten poradnik. Niech wzorce wejdą do wordpressowego świata.

Drugim powodem jest samodoskonalenie. Przy poznawaniu wzorców warto zastosować też metodą nauczyciela (czy inaczej: gumowej kaczuszki). Jeśli myślisz, że coś już znasz, wytłumacz to dla innych. W ten sposób utrwalisz sobie to bardziej. Przynajmniej ja wychodzę z takiego założenia i temu piszę to co teraz piszę.

OK. Koniec wstępu. Za kilka dni zamieszczę opis pierwszego wzorca. Albo go nie zamieszczę, zobaczymy ;) Na razie nie będę zdradzał jaki wzorzec idzie na pierwszy ogień, ale podpowiem, że jest on już niejako obecny w WordPressie ;) Jeśli dobrze znasz WP i przynajmniej liznąłeś temat wzorców, chyba już wiesz o czym mówię ;)

O autorze: Konrad Karpieszuk

Jak każdy chyba tutaj zacząłem po prostu od blogowania. WordPress jednak tak mnie zafascynował, że szybko zabrałem się za tworzenie stron na nim opartych. Później przyszedł czas na pisanie poradników z nim związanych, zdarzyła się nawet książka. Współorganizowałem pierwszy polski WordCamp. Opiekuję się serwisem WPzlecenia.pl, a teraz także tym podserwisem, na którym właśnie jesteście: dev.WPzlecenia. Wszystkim życzę jak najwięcej wyniesionej WIEDZY odnośnie WordPressa. Zaparzcie kawę, usiądźcie wygodnie i - do lektury! :)

Obecnie jestem pracownikiem firmy tworzącej wtyczkę WPML (pozwala tworzyć wielojęzykowe strony), gdzie odpowiadam za jej rozwój. Jestem także autorem bardzo popularnej wtyczki sklepowej TradeMatik

Zostaw komentarz

Uwaga, leci reklama:

Firefox jest znów szybki!

Gdzie nas czytać?

Autorzy »
Komentujący »
#wpzlecenia »