Moje konto

Code Review w PHP – Architektura, PSR i struktura projektu w Laravel.

11 maja, 2023

Witaj w kolejnym odcinku o Code Review.

Ja się nazywam Marcin Lenkowski i od ponad 12 lat programuję w technologiach takich jak Laravel, Symfony czy Nest, a dzisiaj kolejny odcinek dotyczący analizy Code Review, które wygrało w moim instagramowym konkursie.

Jeśli jeszcze tego nie robisz, koniecznie zaobserwuj mój profil na instagramie – lenkowski_dev a na YouTube zostaw lajka i subskrypcję z dzwoneczkiem. Dzięki temu będziemy na bieżąco, a ja pokażę Ci, jak rozwijać się w branży IT.

Wracajmy jednak do kodu i przyjrzymy się strukturze naszej aplikacji.

W jakiej architekturze jest napisana?

Często bywa tak, że piszemy kod szybko, bo zależy nam na tym, żeby po prostu działał. 

Ale nawet jeśli działa, nie dbanie o strukturę projektu może doprowadzić do wielu problemów i ostatecznie stworzyć sporego potwora spaghetti.

Zerknijmy na strukturę tego projektu.

Widzimy tutaj Akcje Fortify, a więc będziemy tu mieć widoki budowane właśnie w tym frameworku, mamy helpery, w których znaleźć można kod niezbyt uporządkowany, mamy w końcu usługi, przy czym jest to tylko jedna klasa.

Panuje tu trochę pomieszania z poplątaniem – ale domyślam się, że chodziło o szybkie napisanie projektu. W niektórych sytuacjach może mieć to uzasadnienie, ale chcę Ci pokazać metody które przyśpieszą Twoje programowanie, zamiast je spowalniać.

Wszyscy bywamy czasem leniwi.

Po co nam PSR? To i tak będzie działać.

Po co zastanawiać się nad architekturą – przecież framework zrobi to za mnie. Monolit Laravela jest całkiem ok… Ale czy zadałeś sobie pytanie jaka architektura będzie najlepsza? Czy pomyślałeś o tym gdzie aplikacja ma działać?

Nauczyłem się już dawno, że jeśli na początku poświęcisz czas na solidną analizę, zwróci Ci się ona z nawiązką.

Mówi się nawet, że jedna godzina myślenia, potrafi zastąpić 10 godzin pisania kodu! I to prawda!

Poświęcaj więc czas na analizę i dbaj o standardy.

Zastanów się, w jakim kierunku chcesz się rozwijać w długim okresie?

Jaki kod chcesz pisać w pracy?

Z pewnością znajdą się firmy, które szukają, szybkich i tanich rozwiązań – ale ja polecałbym Ci jednak być półką premium – najlepszą w swojej branży!

Jakich umiejętności do tego potrzebujesz, czego poszukują te firmy?

Będą liberalne czy raczej restrykcyjne dla jakości kodu?

Co nam może pomóc?

Dzisiaj rozmawiamy o strukturze projektu zatem chcę porozmawiać o PSR.

PSR jest to zbiór wytycznych co do programowania w języku PHP. Ustanowiono „dobre” praktyki programowania. Zbiór ten składa się w tej chwili z 18 zestawów wytycznych, które znajdziesz na stronie psr-fig.org

W tym projekcie niestety widać wiele niedociągnięć związanych z tym tematem.

Nazwy klas, czasem są z małej litery, czasem z wielkiej.

Część akcji kontrolerów znajduje się w jednej klasie, mieszając swoje nazwy, część ma osobne klasy, mimo że wcześniejsze już istnieją.

Brakuje tutaj nieco konsekwencji.

Jeśli nie wiesz, jak utrzymywać styl, to na stronie PSR znajdziesz dobre praktyki tego, w jaki sposób należy to robić.

W przypadku tego projektu, zastosowaliśmy tutaj monolit – czyli architekturę którą dowozi nam Laravel in-the-box ok, to w przypadku tak małej aplikacji może być dobre wyjście.

Niestety jednak, poziom couplingu na bazie danych, czy widokach, których nie odseparowano, korzystając z Fortify, może sprawić spore problemy, na dalszym etapie projektu. 

Zróbmy więc mały porządek w naszym kodzie, tak by można było z powodzeniem rozwijać aplikację we właściwej strukturze.

Tutaj, w przypadku takich problemów warto wykorzystać PHP Storma – zawiera on świetne narzędzia refaktoryzacyjne, które pozwolą nam na przeprowadzenie zmian, bez strachu o to, że coś przestanie działać.

Zacznijmy od zmiany nazw klasy, na zgodne z PSR – czyli zaczynające się od wielkich liter.

Warto byłoby również skoncentrować się na zmianie namespaców, by również zaczynały się z wielkich liter, jak w przypadku helpers.

Przenieśmy odpowiedzialności, do odpowiednich katalogów, na razie nie robiąc zbytniej rewolucji.

Requests niech znajdą się w Http, a pozostałą częścią refaktoryzacji, zajmiemy się w następnych odcinkach.

Zobacz – nie zrobiliśmy nic z samym kodem, ale nasz projekt wygląda zdecydowanie lepiej.

Moglibyśmy jeszcze się pokusić o zmianę tego monolitu w modularny monolit, dajcie znać w komentarzu czy bylibyście zainteresowani taki filmem!

Jednak, już teraz widać, że powoli nasz kod zaczyna wyglądać lepiej.

W następnym odcinku porozmawiamy o utrzymaniu porządku, już bezpośrednio w samym kodzie.

Jeśli chcesz wiedzieć więcej – to mam dla Ciebie coś specjalnego!

Na stronie lenkowski.net możesz wejść i całkowicie za darmo, pobrać ebooka „Code Review” w Laravelu – tam dostaniesz dostęp do tego kodu, oraz wartościowe treści, które pomogą Ci budować swoje aplikacje lepiej!

Posted in Video
Related Posts