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.
No i rozwiązanie zadania teoretycznego dla zasady LSB.
Chcieliśmy tutaj zaimplementować zestaw podklasy dla różnych typów
użytkowników i to już mamy.
W rozwiązaniu zadania od CP i chcielibyśmy też, żeby te podklasy mogły być używane
zamiennie z ich klasą nadrzędną, nie wpływając na zachowanie programu.
A mianowicie dążymy do tego, żeby interfejs był
wspólny i klasy mogły być podmienione.
Jak to będzie wyglądało w kodzie?
Zobaczmy teraz tą klasę.
Ten kod główny dla zasady MSP, który korzysta z naszych obiektów.
Zobacz, że definiujemy tutaj znowu tablicę użytkowników z różnymi rolami i dla
każdego z tych użytkowników będziemy wyświetlać jakieś informacje.
Najpierw przejdźmy do klasy bazowej User i zobacz, że jest tutaj nowa funkcja
Display User Info, która wyświetla nam tutaj informację odnośnie tego jaki to
jest typ użytkownika, jaki jest username i email.
Natomiast wszystkie klasy, które ją dziedziczą będą sobie dodawać
pewną logikę do tej metody i zapisywać ją na wpisywać poprzez słowo kluczowe.
Super wołają sobie tę oryginalną definicję tej metody z klasy
user, czyli wołamy jeszcze raz display user info i dodajemy sobie jakiś tam
konsola dotycząca akurat premium features dla premium usera.
Dla gesta też jest taki komentarz i dla admina jest komentarz.
Admin zarządza aplikacją, więc mamy 3 różne klasy 3 różne typy
gdzieś liczące po klasie bazowej, która implementuje dokładnie tę
samą metodę Display user info.
I teraz nie ma różnicy jaki typ użytkownika
mamy przekazany do tej tablicy users.
Bo każda z tych klas implementuje interfejs i implementuje tę
metodę Display User Info i możemy sobie te klasy bezpośrednio podmieniać.
Możemy dodać więcej typów, możemy dodać więcej np.
użytkowników premium i ten kod cały czas będzie działał tak samo.