Logo

Ep. 13 – Clean Code Part 3 (Boundaries, Clean Concurrency)

V tretej časti série Clean Code rozoberáme Boundaries a Clean Concurrency. To znamená, že rozprávame o používaní knižníc tretích strán, o ich testovaní a o tom, ako sa dá čisto písať viac vláknová aplikácia, ako sa správať k vláknam, čo všetko pri tom treba vedieť a ako sa takéto aplikácie dajú testovať.

Stiahnuť

00:00 – 00:34 Úvod
00:35 – 01:15 Bound aries – úvod
01:16 – 04:30 Príklad – HashMap
04:31 – 06:50 Learning Tests
06:51 – 09:46 Používanie kódu, ktorý ešte neexistuje
09:47 – 10:48 Concurrency – úvod
10:49 – 11:48 Rodiely medzi jedno- a viacvláknovými aplikáciami
11:49 – 14:38 Performance viacerých vlákien
14:39 – 15:30 Viacvláknové programovanie je náročné
15:31 – 17:30 Kritické sekcie by mali byť čo najmenšie
17:31 – 19:07 Používanie klonovaných dát
19:08 – 19:47 Vlákna by mali byť čo najviac nezávislé
19:48 –  21:42 Know your library
21:43 –  22:42 Know your execution models
22:43 – 23:34 Kritické sekcie by mali byť čo najkratšie v2
23:35 – 25:11 Testovanie viacvláknových aplikácií
25:12 – 25:43 Konfigurácia
25:44 – 27:30 Rôzne platformi, rôzny výsledok
27:31 – 28:06 Nereprodukovateľnosť
28:07 – 29:18 Zhrnutie

Boundaries

  • Hranice medzi nasim kódom a kódom, nad ktorým nemáme kontrolu
  • Zredukovanie nežiadúcej funkcionality
  • Learning Tests – namiesto skúšania knižnice si na túto knižnicu napíšeme testy, čím sa naučíme ju používať a zároveň si ju aj otestujeme – Win/Win
  • Volania knižnice zaobalíme do vlastnej triedy, aby sme v prípade zmeny museli zasahovať do čo najmenej kódu
  • Predchádzajúci bod sa dá využiť aj pri tom, keď ešte nevieme, ako bude kód tretej strany vyzerať

Clean COncurrency

  • Concurrency je práca s viacerými vláknami
  • Jednovláknové aplikácie sa oveľa jednoduchšie debugujú
  • Súbežnosť nie vždy zlepšuje performance
  • Má relatívne veľký overhead
  • V kritických sekciách mať čo najmenej práce s dátami
  • Keď pracujeme s read-only dátami, tak si vieme vytvoriť ich kópie a až tie poslať do vlákien, aby sa neobmedzovali
  • Vlákna by mali byť čo najviac nezávislé
  • Know your library – možno môj jazyk ponúka lepšie možnosti ako spraviť thread-safe dictionary
  • Know your execution models – spoločné zdroje, mutex, vyhľadovanie vlákna, deadlock, livelock, producer-consumer, readers-writers, dining philosophers
  • Testovanie viacvláknového kódu je veľký problém
  • Kód je potrebné testovať vo viacerých scenáriách – 1 vlákno, 100 vlákien, Mac OS, Windows, spomalovanie
  • Na rôznych platformách sa môže viacvláknový kód správať úplne inak

Kniha na Amazone
Blog Uncle Bob-a
Twitter Uncle Bob-a

Logo
Street of Code o.z.Hlaváčiková 2984105, Bratislava
Chcem odoberať novinky
Poskytnutím emailu súhlasíš s jeho spracovaním v súlade s GDPR.
Copyright © 2024 Street of Code
Kód tejto stránky si vieš pozrieť na našom GitHub-e