Refaktoryzacja w Django

Tytuł: Refaktoryzacja w Django
Kod: django-refactor
Kategoria: Python
Forma: 20% wykłady, 80% warsztaty
Czas trwania: 3 dni
Odbiorcy: developerzy, architekci
Zapisy: Indywidualne zamówienie i dopasowanie dla grupy.
Logistyka: W siedzibie klienta lub w innym dowolnym miejscu.

Szkolenie z refaktoryzacji i porządkowania projektów napisanych w Django z typowymi dla tego frameworka bolączkami.

Dzień 1: Antywzorce i zapachy kodu w projektach z Django, rozbijanie projektu wertykalnie z użyciem DDD

Dzień 2: Wyciąganie odpowiedzialności z building blocks i wprowadzanie nowych wzorców

Dzień 3: Wyciąganie odpowiedzialności z building blocks i wprowadzanie nowych wzorców cd., Testowanie

Wyróżniki szkolenia

  • Wzorce i antywzorce
  • Wyjście z architekturą poza framework
  • Domain-driven Design

Program Szkolenia

Program jest ramą w jakiej możemy się poruszać merytorycznie - program dla konkretnego szkolenia dedykowanego ustalamy z grupą na podstawie analizy przed-szkoleniowej.

  1. Po co refaktoryzujemy? Jak to robić?
    1. Refaktoryzacja do czegoś
    2. Refaktoryzacja w kierunku czegoś
    3. Wybór miejsca refaktoryzacji
  2. Powszechne antywzorce
    1. Zbyt duże modele
      1. Kohezja i zbyt obszerne modele
      2. Brak realnego wertykalnego podziału (na przykład z DDD)
      3. Łączenie zbyt wielu odpowiedzialności które można by wydzielić np. z użyciem Gateway Pattern
      4. Wyjątek: model jako Process Manager
    2. Przypadkowy podział na aplikacje
      1. Aplikacje importujące dużo kodu z siebie wzajemnie
      2. Feature i data envy
      3. Aplikacja “core”
    3. Logika, którą trudno zrozumieć
      1. W widokach lub serializerach z DRF
      2. Poukrywana w obsłudze sygnałów
    4. Niewydajne widoki
      1. Profilowanie z django-silk
      2. Delegowanie zadań w tło przy użyciu kolejek jak Celery
      3. Modele do odczytu (ang. read models)
    5. Niska testowalność
      1. Nieczytelne testy
      2. Wolne testy
      3. Niestabilne testy
      4. Niskie pokrycie kodu testami
      5. Brak możliwości testowania bez używania bazy danych
    6. Pohakowany admin
      1. Do czego admin powstał, a do czego jest używany
  3. Naprawianie podziału wertykalnego z Domain-Driven Design
    1. Symptomy nietrafionej modularyzacji
    2. Słabości pojedynczego modelu i patrzenia na wszystko w jeden sposób
    3. Wprowadzanie granic między aplikacjami
      1. Fasada
      2. Para port / adapter
      3. Zdarzenia
    4. Walidowanie granic między aplikacjami
  4. Building blocks w Django i odpowiedzialności
    1. Modele
    2. Object Managery
    3. Signal Handlers
    4. Serializer
    5. Widok
    6. Formularz
  5. Rozszerzanie standardowego zestawu building blocks
    1. Data Transfer Object
    2. Przekazywanie danych bez słowników
    3. Walidować czy nie?
    4. Biblioteki
      1. Pydantic
      2. dataclasses
      3. attrs
    5. Service layer
      1. Kiedy stosować?
      2. Jaką logikę w nim umieścić?
      3. Jakiej logiki nie umieszczać w serwisie?
    6. Własne sygnały używane jako zdarzenia
    7. Fasada
      1. Jako API pomiędzy aplikacjami
    8. Value Object
    9. Wstrzykiwanie zależności (ang. dependency injection)
  6. Testowanie
    1. Przegląd tego, co mamy w Django
    2. Zrównoleglanie testów
    3. Pisanie testowalnego kodu w Django


Pobierz program w formacie PDF

Trenerzy

Poznaj ekspertów, którzy mogą poprowadzić Twoje szkolenie.

Zamów szkolenie

Imię i nazwisko:
Firma:
E-mail:
Nr tel:
Temat:
Wiadomość:

Jeżeli preferujesz osobisty kontakt to zawsze możesz zadzwonić.

Iwona Sobótka

Koordynatorka szkoleń


Twoje dane osobowe przetwarzamy, aby udzielić odpowiedzi na Twoje pytanie. Administratorem Twoich danych osobowych jest Bottega It Minds Sławomir Sobótka. Przysługuje Ci prawo wniesienia sprzeciwu wobec przetwarzania, prawo dostępu do danych, prawo żądania ich sprostowania, usunięcia lub ograniczenia ich przetwarzania. Szczegółowe informacje dotyczące przetwarzania Twoich danych osobowych znajdują się TUTAJ.