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.
O disco polo mówi się, że każdy słyszał, ale nie każdy się przyznaje, że zna.
O zasadach Solid mogę powiedzieć, że każdy słyszał.
Nie każdy zna, a jeszcze mniej osób stosuje tę zasadę w praktyce.
No i dlaczego tak się dzieje?
Powiedzieliśmy o pierwszej przyczynie tego zjawiska, o ignorancji, na którą składa
się wiele różnych czynników w podejściu programistów do zasad SOLID.
No ale z drugiej strony jeśli czegoś nie stosujemy, to po prostu
może to wynikać z tego, że po prostu tych zasad nie znamy.
A jak poznać zasady SOLID?
Wystarczy przerobić ten kurs do końca i wszystko będzie jasne, więc brak
znajomości łatwo wyeliminujemy.
No ale tak niestety często bywa, że jesteśmy przytłoczeni właśnie tą masą
różnych rzeczy, których musimy się nauczyć jako programiści, żeby poznać choćby
framework czy bazę danych, czy strukturę zapytań cokolwiek innego.
A zapominamy o dobrych praktykach, bo na to nie ma czasu, bo trzeba gonić z
projektem, trzeba gonić z innymi rzeczami.
Nie mamy praktyki.
Zasady SOLID na początek są bardzo teoretyczne, bo trzeba poznać teorię,
która z nich wynika i problemy, które one rozwiązują, których czasami możemy nie
spotkać w aplikacji w takiej formie, jak o tym mówią podręczniki,
a co za tym idzie unikamy praktykowania tych zasad, praktykowania stosowania ich w
kodzie, więc naturalnie nie będziemy wiedzieć, jak je dobrze zastosować.
Inną rzeczą, która sprawia, że nie są zasady SOLID zbyt
często stosowane, to szybkie interakcje w projektach, zwłaszcza start upów, gdzie
ten kod pisany jest często na kolanie, bo musimy gonić, bo konkurencja depcze po
piętach i musimy dowodzić szybko feature, szybko funkcje.
Mieliśmy ostatnio bardzo duży wysyp
wszelkiego rodzaju aplikacji opartych o sztuczną inteligencję.
Po tym jak został opublikowany czat pt.
I to był najlepszy dowód na to, że te szybkie iteracje często mogą wpływać na
pewne kompromisy w tworzeniu oprogramowania polegające na tym, że
zostawiamy niektóre zasady i dobre praktyki gdzieś z boku.
Wreszcie wielkie firmy, wielkie aplikacje robią wielkie pivot, by
Netflix nie był od razu platformą treningową, tylko musiał wykonać pivot i
często z aplikacjami typu SaaS, z aplikacjami web owymi mobilnymi.
Mamy takie pivot, gdzie pewne funkcjonalności, które na początku
były uznawane za korkowe, za kluczowe, po pewnym czasie już nie są takie.
I musimy zrobić wielki pivot, a jeśli zrobić wielki pivot, to nie ma czasu na
zmuszanie się nad dobrymi praktykami, zasadami, bo trzeba się szybko
skonwertować, bo klienci uciekają, bo pieniądze biznesowi uciekają.
No i wreszcie jeśli robimy wielkie piwo, ktoś ucieka, ktoś nas goni,
no to mamy taką presję czasu. Coś się dzieje.
Czujemy pośpiech, czujemy presję.
Sami sobie czasami narzucamy presję czasu.
Deadline nie do wykonania.
Mamy aplikacje klienckie, nad którymi pracujemy w firmach typu software house.
Ta presja czasu jest kluczowa, bo od tego zależy też cashflow firmy i to, czy firma
będzie dobrze prosperować, czy będzie miała dobrą opinię na rynku.
Więc często te deadline po prostu blokują nas przed zatrzymaniem
się na chwilę, żeby zastosować jakąś dobrą zasadę, jakąś dobrą praktykę, pomyśleć nad
tym, jak rozwiązać lepiej problem w kodzie i jeśli mamy deadline, to
mamy też ograniczenia budżetu.
Budżet jest wąski i często Szybciej po prostu napiszemy kod, który
nie jest oparty o dobre praktyki, a dobre zasady, żeby tylko
zmieścić się w budżecie.
Nie mając na uwadze tego, jakie konsekwencje to będzie
miało w przyszłości.
Bo w programowaniu jest często tak, że dzisiaj pisany kod
zawsze wydaje nam się dobry, ale za miesiąc będziemy przeklinać tę
osobę, która go napisała i nierzadko okazuje się, że tą osobą jesteśmy my sami.