SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.
SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.
Successfully reported this slideshow.
Activate your 14 day free trial to unlock unlimited reading.
Péhápkaři - Píšeme čitelný kód #4 by Petr Bechyně, Driveto
Péhápkaři - Píšeme čitelný kód #4 by Petr Bechyně, Driveto
1.
Píšeme čitelný
a testovatelný kód #4
Jdete testovat!
2.
Známe se?
Píšeme čitelný a testovatelný kód
• #1: Return null a optional arguments
• #2: SRP v praxi
• #3: Buďte striktní!
3.
Důvody proč nepoužít null nebo prchnout
tisíc mil
V code review či při kontrole vlastního commitu narazíme na:
4.
Důvody proč nepoužít null nebo prchnout
tisíc mil
• Nepředstavuje žádný typ (přenáší chyby)
• Nejasný význam
• Nejednoznačné API tříd
5.
Delegate or die()
• Příliš mnoho závislostí v konstruktoru
• nepředpokládáme, že bychom vstřikovali závilosti mimo konstructor pomocí setterů
• DI kontejner opravdu není jedna závislost
• Chybí jednotkové testy = to nejde
• Příliš mnoho řádků kódu v jedné metodě
• Není možné 1 větou charakterizovat, co daná služba dělá:
• Tato service odesílá emaily
vs.
Tato service sestaví šablonu emailu, vytvoří záznam ve frontě, odešle email a
zaloguje ho
6.
SRP compliance check
• Při čtení těla metody čtu řádek po řádku
• Pokud je volána závislost (delegování), pak řeknu např. deleguji získání
aktivních knih
7.
SRP compliance check
• Tato metoda vrací knížky z daného období
• Deleguji získání knih (z databáze?)
• Deleguji spočítání dekády z číselníku období
• Volám filtrování knih v seznamu knih (BookList)
a ten vracím
Approved!
8.
SRP compliance
check
• Tato metoda vrací knížky z daného období nebo všechny
• Deleguji získání knih (z databáze?) [1]
• Spočítám první rok dekády [2]
• Iteruji nad knížkami
a vybírám knížky s rokem vydání [3]
• V rámci bloku počítám poslední rok dekády [4]
• Volám filtrování knih v seznamu knih (BookList)
a ten vracím
Rejected!
9.
SRP compliance check
Tato metoda vrací knížky daného
autora
• Deleguji získání knih (z databáze?)
• Iteruji nad získanými knihami a
vybírám autor name
• Vracím získané pole knih
Approved!
A co ten null?
13.
Díky za pozornost!
• We are hiring
www.driveto.cz
Petr Bechyně petr.bechyne@driveto.cz
CTO Driveto 736 761 183
github.com/tuscanicz
facebook.com/petrbechynecz