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ť
https://wp.streetofcode.sk/wp-content/uploads/2019/07/StreetOfCode-Ep13.mp3
VIDEO
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