Techniki pracy z kodem
Dla kogo
Szkolenie przeznaczone dla programistów i liderów technicznych, którzy chcą wprowadzić praktykę ciągłego refaktoryzowania.
Wymagane umiejętności
Oczekiwania:
- Uczestnik zna konkretny język programowania na poziomie podstawowym.
- Uczestnik zna programowanie obiektowe na poziomie podstawowym.
Szkolenie otwarte jest prowadzone w języku Java.
Szkolenie zamknięte jest prowadzone głównie w językach:
Po wcześniejszych ustaleniach szkolenie może być zrealizowane w innych językach.
KORZYŚCI ZE SZKOLENIA
Obecnie większość komercyjnych przedsięwzięć opartych jest na rozwiązaniach, które są rozwijane latami. Wyzwaniem dla zespołów jest praca z kodem zastanym (ang. legacy code) oraz odwieczny dylemat co i jak refaktoryzować na co dzień.
Zagadnienia Technik pracy z kodem skupiają się na tym, jak pisać kod który czyta się jak książkę oraz refaktoryzować złożone systemy.
Podstawowy program
Moduł. 1
Software Craftsmanship
Moduł. 2
Formułowanie algorytmu
Moduł. 5
Upraszczanie metod
Moduł. 6
Komponowanie metod
Moduł. 7
Naturalny Porządek Refaktoryzacji™
Moduł. 8
Obsługa sytuacji wyjątkowych [opcjonalnie]
Moduł. 9
Wybrane zagadnienia testowania jednostkowego [opcjonlanie]
Szczegółowy program
Moduł. 1
Software Craftsmanship
- Dlaczego czysty kod ma znaczenie?
- Prostota, komunikacja i elastyczność
- Dług techniczny
- Koszt złej jakosci kodu
- Efektywność pracy z kodem
Moduł. 2
Formułowanie algorytmu
- Co oznacza „kod, który wyraża algorytm”
- Złożoność intencjonalna i przypadkowa
- Przenoszenie algorytmu do kodu
Moduł. 3
Komentarze
- Sens stosowania komentarzy
- Dobre i złe komentarze
- Komentarze prawne
- Komentarze wyjaśniające
- Wyjaśnianie zamiarów
- Ostrzeżenia
- Komentarze TODO
- Komentarze wzmacniające
- Wtórne komentarze
- Komentarze niewymagane
- Nadmiarowość
- Znaczniki pozycji
- Klamry zamykające
- Zakomentowany kod
- Informacje nielokalne
Moduł. 4
Nazewnictwo
- Nazwy mają znaczenie
- Intencje w nazwach
- Unikanie dezinformacji
- Uwidacznianie różnic
- Nazwy łatwe do wyszukania
- Przedrostki
- Nazwy klas
- Nazwy metod
- Dowcipność
- Analogie i kalambury
- Zastosowanie kontekstu
- Nazwy, których powinieneś unikać
- Długość nazw
Moduł. 5
Upraszczanie metod
- Wielkość metod
- Bloki i wcięcia
- Odpowiedzialność metody
- Instrukcja switch
- Nazwy opisowe
- Argumenty i ich ilość
- Command-Query Separation
- Wyjątki
- Powtórzenia strukturalne
- Metryka McCabe’a
- Co i kiedy refaktoryzować
- Refaktoryzacje upraszczające wyrażenie warunkowe
- Wprowadzanie wzorca Null Object
Moduł. 6
Komponowanie metod
- Refaktoryzacje
- Extract method
- Inline method
- Inline temp
- Replace temp with query
- Introduce explaining variable
- Split temporary variable
- Remove assignments to parameters
- Extract Method Object
- Substitute Algorithm
Moduł. 7
Naturalny Porządek Refaktoryzacji™
- Różne wymiary refaktoryzacji
- Refaktoryzacja jako proces
- Technika Formułowania Algorytmu
- Technika Utylizowania Komentarzy
- Technika Doboru Nazw
- Technika Doboru Długości Nazwy
- Technika Analizy Złożoności Metody wg McCabe’a
- Technika Dekomponowania Metody
- Technika Odtwarzania Testu
- Technika Małych Kroków™
- Proces Naturalnego Porządku Refaktoryzacji™
Moduł. 8
Obsługa sytuacji wyjątkowych [opcjonalnie]
- Wyjątki a wyniki zwracane
- Kontrolowane czy niekontrolowane wyjątki?
- Tworzenie hierarchii wyjątków
- Obsługa referencji null
- Dostarczanie kontekstu
- Praktyki tworzenia konstrukcji try-catch-finally
Moduł. 9
Wybrane zagadnienia testowania jednostkowego [opcjonlanie]
- Wyjątki a wyniki zwracane
- Kontrolowane czy niekontrolowane wyjątki?
- Tworzenie hierarchii wyjątków
- Obsługa referencji null
- Dostarczanie kontekstu
- Praktyki tworzenia konstrukcji try-catch-finally