Tworzenie kodu według najlepszych praktyk
2 godz. 45 min · Full-stack i Programowanie
Rafał PiekaraSoftware KomandosNie zrozumiesz SOLIDa bez teoretycznych podstaw. Przejdziemy przez założenia stojące za każdą z nich. Przeanalizujemy problemy, które możesz spotkać oraz dowiesz się dlaczego ciągle jeszcze tak wielu programistów nie stosuje się do tych zasad.
Ruby i Typescript to technologie, które świetnie odzwierciedlają uniwersalizm SOLIDa. Te złote zasady działają w językach dynamicznie typowanych i interpretowanych jak Ruby oraz przy statycznym typowaniu na przykładzie Typescript.
Zanim zabierzesz się za programowanie warto poćwiczyć SOLIDny sposób myślenia. Zmierzysz się z zadaniami, w ramach których będziesz projektować kod tak, aby wszystkie zasady SOLID znalazły w nim swoje zastosowanie.
Prawda jest taka, że kod, z którym w większości pracujemy ma swoją historię. Czasami historia ta jest tak bolesna, że klasy i metody są zagmatwane, poplątane i trudne w utrzymaniu. Gdy dotrzesz do tego miejsca będziesz mieć w arsenale wszystkie potrzebne narzędzia, żeby zmierzyć się z zadaniami praktycznymi, które przekształcą kod legacy w SOLIDne arcydzieło.
Tak ważny temat, jak testowanie nie może zostać pominięty. Między innymi po to też stosujemy zasady SOLID, żeby nasz kod praktycznie sam się testował. Napiszesz więc testy, których wzorce możesz wykorzystać w dowolnym projekcie, dowolnej technologii, jeśli tylko kod, który testujesz będzie spełniał wymagania zasad SOLID.
Nie ma znaczenia, czy dopiero zaczynasz przygodę z programowaniem, czy też jesteś starym wyjadaczem, który klasami i interfejsami myśli przy zagryzaniu tosta na śniadanie. Ten kurs jest właśnie dla Ciebie. Technologia ani język programowania też nie mają znaczenia. Zasady SOLID to uniwersalny zbiór. Ich znajomość sprawi, że Twój kod będzie lepszy, łatwiejszy w utrzymaniu i odporny na perturbacje i zmiany.
Przygotowałem dla Ciebie kilka wskazówek, które pomogą przy implementacji
i spełnianiu wymogów zasady SRP.
W Twoim kodzie wskazówka numer 1 Zidentyfikuj i Wydzial Operacje biznesowe.
Jeśli piszemy kod, który ma mieć tylko jedną
odpowiedzialność, to my musimy tę odpowiedzialność jasno określić.
I w pierwszej kolejności takie określenie odbywa się przez identyfikację operacji
biznesowych, procesów biznesowych, które zachodzą w aplikacji.
Możliwe, że taki proces będzie się składał na więcej niż jedną operację i wtedy
więcej niż jedna operacja będzie dobrym punktem wyjścia do wydzielenia tych
pojedynczych odpowiedzialności.
Analiza procesów biznesowych pomoże Ci także zidentyfikować aktorów w Twoim
systemie aktorów, którzy będą korzystać z kodu.
Wobec czego dużo łatwiej będzie stworzyć takie elementy kodu, takie metody, takie
klasy, które faktycznie będą miały tę jedną odpowiedzialność według zasady SRP.
Wskazówka nr 2 Skup się na elastyczności.
Zasada SRP to nie jest tylko sztuka dla sztuki.
To nie jest tylko trzymanie jednej konkretnej odpowiedzialności, jednego
powodu do zmiany czy odpowiedzialności względem jednego aktora
w klasie czy w metodzie.
To przede wszystkim tworzenie elastycznego kodu.
Dużo łatwiej modyfikuje się taki kod, który ogarnia i stosuje możliwie
jak najmniejszy element logiczny.
Dużo łatwiej pracuje się w trakcie faktoringu, dużo łatwiej usuwa się bugi,
dużo łatwiej wreszcie usuwa się martwy kod, kiedy musimy usunąć po prostu
klasę, która robi możliwie jak najmniej.
Skup się na elastyczności, żeby ten kod mógł żyć, żeby mógł być elastyczny, mógł
być łatwy do utrzymywania, łatwy w zmianie.
No i wskazówka numer 3 Unikaj Gat Objects.
Mówiłem wcześniej o gada Object Object dla przypomnienia to jest taka
klasa, metoda, cokolwiek.
Moduł, który robi wszystko robi zbyt wiele.
Takim klasycznym obiektem często w systemach jest klasa user i klasa.
User jest naszych systemach często odpowiedzialna za logowanie, zmianę hasła,
zmiany w profilu, procesowanie płatności, zaproszenia użytkowników, wysyłanie
maili i wiele, wiele innych.
Unikaj takich obiektów.
Po pierwsze trudno je testować, bo musisz brać pod uwagę bardzo wiele czynników, A
jeśli dochodzą tam jeszcze jakieś prywatne metody, prywatne funkcje,
no to masz pewność, że Twoje testowanie będzie naprawdę koszmarem.
Więc unikaj ich. Twórz małe klasy.
Nie bój się ilości klas.
Nikt jeszcze nigdy nie widział zbyt dużej ilości klas w systemie, więc spokojnie
możesz tworzyć małe klasy, małe metody, które faktycznie będą miały
wąską odpowiedzialność.
Niektóre języki programowania i niektóre narzędzia typu liter w tych językach
programowania wręcz zaznaczają zbyt długie metody czy zbyt
długie klasy jako błąd w formatowaniu i trzeba je refaktoryzacji, żeby
spełnić wymagania literackie.
Więc pomyśl o tym.
Pamiętaj, żeby unikać gada obiektów.
Wiadomo, w jakiś momentach iteracji taki grad object może powstawać, ale
Twoim narzędziem jest faktoring.
Zmienianie kodu, doprowadzenie do tej prostej formy, którą promuje zasada
SRP jest jak najbardziej osiągalne.