Czysta architektura w Pythonie

utworzone przez | 23/08/2019 | Czysta architektura w Pythonie

Od wielu lat szukam lepszych rozwiązań i praktyk programistycznych. Robię co w mojej mocy, żeby mój kod był czytelny, prosty oraz, co najważniejsze, żeby inni mogli go rozwijać bez wyrzucania z siebie tony przekleństw. Nie jest to łatwe zadanie, zawsze mi czegoś brakuje, coś mogłoby wyglądać lepiej lub być inaczej zorganizowane. 

Przez większość czasu skupiałem się na nazewnictwie, dobrej strukturze kodu, trzymaniu się podstawowych wzorców projektowych. To dawało systematyczny, lecz powolny wzrost jakości mojego kodu. Co gorsza, nie czułem, żeby to była najlepsza droga, jednak tylko taką znałem.

Dużo zmieniło się w chwili gdy “zaprzyjaźniłem się” z dwójką Panów, Robertem C. Martinem, zwanym wujkiem Bobem, oraz Kevlinem Henney’em. Obaj wprowadzili mnie do świata czystej architektury i to był ogromny skok. Znalazłem paliwo rakietowe, którego od dawna szukałem 😉

Czysta architektura nie jest zbyt popularna w środowisku Pythona. Wiele tutoriali, samo Django i ogólnie dostępne materiały, raczej korzystają z tradycyjnego podejścia żądanie-odpowiedź. Na początek, ba nawet na dłuższą metę, takie podejście wystarcza. 

Jednak Python staje się coraz bardziej popularny w środowisku enterprise i nie mówię tu o Star Treku 🚀, tylko o bardzo zaawansowanych systemach. Takie aplikacje są rozwijane i utrzymywane latami. Tradycyjne podejście nie wystarcza i stwarza wiele wyzwań. Jedno z ciekawszych, to aktualizacja technologii. Gdy korzystasz z czystej architektury, nawet osoba bez większego doświadczenia może nie tylko zaktualizować, ale i całkowicie wymienić dowolny z twoich frameworków 🙀

Mini projekt

Celem serii “CA w Pythonie” będzie stworzenie krok po kroku mini projektu. Nie będzie to jednak projekt prezentujący jakąś technologię czy framework. Będzie to zestaw połączonych narzędzi, które tworzą spójną całość. 

Najważniejsze w tym projekcie będzie bazowanie na prawdziwej, złożonej aplikacji, gdzie te rozwiązania się dobrze sprawdzają. Będę opisywać dużo pobocznych rzeczy, nie związanych bezpośrednio z czystą architekturą, ale potrzebnych do zbudowania SOLID-nego kodu. Omówimy np takie świeżynki jak typowanie czy dataclasses.

Plan podróży

W czasie naszej podróży 🌎 będziemy dużo kodować. To według mnie najlepszy sposób na prezentacje tego tematu. Słowa można różnie interpretować, ale kodu już nie.

Domena aplikacji

Zaczniemy od najważniejszej rzeczy w naszym mini projekcie, czyli domeny aplikacji. Opiszemy dane na których będziemy pracować oraz jakie operacje będziemy chcieli wykonywać – zaimplementujemy czystą logikę biznesową.

Testy jednostkowe w czystej architekturze

Nauczymy się jak powinny wyglądać testy jednostkowe w czystej architekturze. Takich testów pozazdrości ci każdy programista! 😎 To powinna być największa zachęta do dalszej nauki!

Nie zaczynaj od bazy danych 🙈

Przygotowanie czystej architektury bez bazy danych. Wujek Bob zbudował swój system trzymając wszystkie dane w zwykłych plikach tekstowych. Moja propozycja jest trochę inna, ale bazuje na jego pomyśle.

Pierwsza zależność – wystawianie API

Tak, będziemy budować API. Do tego będziemy musieli skorzystać z jakiejś biblioteki, frameworka webowego. Czy to ważne jakiego? Nie 🙂

Zabezpieczenie domeny – wyznaczanie granic 👮

Ostatnim kluczowym elementem czystej architektury jest zabezpieczenie naszej domeny. Tak jak wszystkie ważne elementy naszego projektu, także granice należy w jakiś sposób zabezpieczyć.

10, 9, 8 …

Odliczanie się zaczęło! Za dwa tygodnie omówimy domenę aplikacji i jak możemy ją zbudować w naszym ulubionym języku – Pythonie  🐍👋

O autorze

O autorze

Grzegorz Kocjan

8 lat z Pythonem to wspaniała przygoda, nieważne czy musiałem naprawić błąd na wczoraj, czy zaprojektować zaawansowany i wydajny system, Python nigdy mnie nie zawiódł! 🐍

Czysta architektura okiem ekipy migawka.it

Jakie problemy napotkaliśmy na początku? W czym nam pomogła? Kiedy na pewno z niej nie skorzystamy?

Sekretny Mikołaj w Pythonie – Warsztat Migawki

Oto pierwszy warsztat 🔧 migawki. Celem warsztatu jest poprawienie prostego skryptu i pokazanie jak rozwiązujemy codzienne problemy oraz na co zwracamy uwagę przy ocenie jakości kodu. “Pierwsza wersja wszystkiego to śmieci”, my, też przejdziemy przez parę iteracji, ale mam nadzieje, że efekt końcowy zaskoczy Cię tak samo jak mnie😱

Test driven development: Część 2 – Model pracy w TDD

W tej części naszego cyklu o TDD dowiecie się dlaczego warto rozbijać pracę na etapy i co test driven development ma wspólnego ze Scrumem.

Test driven development: Część 1

Rysownicy szkicują. Pisarze robią konspekty. Naukowcy stawiają hipotezy. Co robią programiści? Zwykle idą na żywioł. Strach przed waterfallem poszedł tak daleko, że przestaliśmy planować cokolwiek. Tymczasem dobrze jest mieć mechanizm, który będzie co kilka minut przypominał nam, gdzie jest nasz cel. Tym właśnie jest test driven development.

(Po)wakacyjnie o domenie i plecakach

Wakacje się skończyły. W plecakach miejsce konserw, survivalowych gadżetów i karimat, zajęły laptopy i niezbędniki do bytowania w biurowej dżungli. A gdybyś do plecaka miał spakować kod. Według jakich kryteriów wybierzesz to, co jest ci niezbędne do przeżycia? Jak skutecznie nadać priorytety poszczególnym modułom? Które elementy architektury pozytywnie przejdą selekcję, a które nie? Już za kilka akapitów znajdziesz praktyczną instrukcję.

Domena aplikacji w Pythonie – Encje

Budowanie domeny aplikacji to najważniejsza i najtrudniejsza część każdego projektu. Ten złożony proces posiada trzy najważniejsze składniki. Zaczniemy od SOLID-nych encji, czyli zaprojektowania i zaimplementowania wyglądu naszych danych.

Funkcja trackback/Funkcja pingback

  1. Domena aplikacji w Pythonie - Encje - migawka.it - […] częścią serii “Czysta architektura w Pythonie”. Zachęcam cię do przeczytania pierwszej, wstępnej części, jeżeli jeszcze tego nie […]

Prześlij komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Pozostań w kontakcie