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