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.
Zobaczmy teraz, jak nasz faktoring klasy Telekom Service wpłynął na jakość
i wygodę testowania naszego kodu.
Dla wygody wydzieliłem tutaj wszystek kod, który wcześniej napisaliśmy do osobnych
plików, żeby zwiększyć czytelność w tym momencie.
Kiedy patrzymy sobie na ten kod, widzimy, że każda klasa ma swój osobny plik.
Jesteśmy w stanie łatwo ocenić, jakie operacje będą w naszej
aplikacji wykonywane.
Pojawiły się dwa katalogi katalog lib i katalog sp i to samo zobaczysz
też w innych przykładach.
Później w kolejnych lekcjach.
Więc w katalogu lib mamy całą logikę biznesową, czyli to są wszystkie nasze
klasy, które wykonują nasze operacje biznesowe.
Natomiast katalog SPEC ma w sobie napisane testy.
Testy zostały napisane.
We frameworku Respect jest framework służący do testowania kodów Ruby.
Tak jak kod przykładów mamy tutaj testy napisane w Rubi i zobacz,
że te testy są mega proste.
Testy dla customer notice Mayera testują powiadomienie dla klienta, testy info
z serwisu, testują generowanie faktury.
Tutaj możemy sprawdzić czy ta wygenerowana faktura ma odpowiednie wartości,
czy jest odpowiednio stworzona. Mamy Payment Service.
Możemy sprawdzić sobie statusy błędów, które mogą być rzucane w trakcie
procesowania płatności, ale wszystko odbywa się w tym małym, jednym
zamkniętym w kapsule teście.
Tak samo w Planet Serwis.
Mamy bardzo prosty kod, w którym tworzymy test double, czyli mocujemy
wywołania do różnych klas.
Te wywołania klas przekazujemy jako parametry, te nasze double testowe i
sprawdzamy czy wszystko działa tak jak powinno.
Jak widzisz, ten kod nie testuje wykonania logiki biznesowej w sposób integracyjny.
Natomiast testujemy tutaj implementację, a mianowicie to czy nasz
serwis deleguje wykonanie operacji do poszczególnych klas
z pojedynczą odpowiedzialnością i przekazując im odpowiednie parametry.
Więc tak wyglądają te testy.
Możemy tutaj dodać jeszcze jeden test integracyjny, który już nie będzie
operował na kablach na mocach, ale będzie wykonywał właściwą logikę biznesową
i sprawdzimy jak to wszystko wygląda.
W ten sposób możemy testować kod napisany zgodnie z zasadą SRP.
Jeśli przypomnisz sobie jak to wyglądało w poprzedniej lekcji, jak telekom serwis
wyglądał wcześniej, to ten test dla samego serwisu telekom Serwis
raz, że byłby bardzo długi, a dwa, że byłby mniej czytelny.
Musielibyśmy uwzględniać wiele warunków brzegowych, a trzy po prostu
byłby trudne w utrzymaniu.
Teraz możemy sobie testować każdy z tych elementów w izolacji i sprawdzać,
czy nasz system działa poprawnie.
Dzięki temu zyskujemy spójność i większą testowanie naszego kodu.