Logo

Ep. 15 – Clean Code Part 5 (System, Emergent Design)

5. časť série o Clean Code je zároveň aj poslednou a rozoberáme v nej kapitoly System a Emergent Design. Ako funguje mesto? Jeden človek všetko riadi? Keď nám prestane tiecť voda, tak nebudú ani odvážať odpad? Nie. Separation of Concerns. V druhej časti epizódy sa pobavíme o 4 pravidlách, ktoré nás privedú k dobrému dizajnu.

Stiahnuť

00:00 – 00:29 Úvod
00:29 – 03:27 Viete si predstaviť, že vybudujete sami mesto?
03:28 – 07:20 Separation of Concerns
07:21 –  11:03 Dependency injection
11:04 – 12:39 Separation of Concerns ako základ pre agilný vývoj
12:40 –  15:15 Aj pri agilnom vývoji treba myslieť trochu dopredu
15:16 – 16:34 4 Pravidlá pre Emergent Design
16:35 – 20:11 Pravidlo 1: Prechádzajú všetky testy
20:12 – Pravidlo 2: Duplikácia

Budujeme mesto

  • Pri malej dedine môže mať beh celej dediny na starosti jeden človek (jedna classa vie v malom programe riešiť všetko).
  • Separation of Concerns –  každá jednotka v kóde je zodpovedná za svoju vec a nemieša sa do starostí niekoho iného (napr. ho nezaujíma ako vytvorí nejakú nadradenú classu – nevytvára ju).
  • Keď začíname systém budovať môžeme mať všetko pokope. Postupne ako nám táto “kopa” rastie začne byť čast na to, aby sme to pekne oddelili.
  • Dobrým príkladom Separation of Concerns je Dependency Injection – objekty, ktoré classa používa vytvára za nás framework (alebo niečo iné) a my to nemusíme v každej classe robit zvlášť
  • Agilný vývoj je vôbec možný hlavne vďaka práve Separation of Concerns. Tým, že je všetko oddelené, sa nám to oveľa ľahšie rozširuje alebo mení.
  • Keď ideme agilne, tak aj tak potrebujeme mať trochu víziu ako to má vyzerať v budúcnosti, aká veľká bude naša aplikácia a tak.

Emergent design

4 pravidlá, ktoré by mali spôsobiť, že nám vznikne dobrý design:

  1. Prechádzaju všetky testy
  2. Neobsahuje žiadnu duplikáciu
  3. Vyjadruje úmysel programátora
  4. Minimalizuje počet tried a metód 

Prechádzajú všetky testy

  • Systém môže byť perfektne navrhnutý, ale pokiaľ neviem overiť, že naozaj funguje, tak je celý systém spochybnený 
  • Keď zrazu neprechádza nejaký test, tak to treba čím skôr, rozumej hneď, opraviť
  • Keď vytvárame systém tak, aby bol testovateľný, tak zároveň nás to tlačí k tomu, aby naše triedy boli malé a jednoúčelové (SRP – single responsibility principle) 
  • Previazaný systém sa tiež tažko testuje. Čím viac testujeme, tým viac musíme využívat princípy ako dependency injection, interfaces, aby sme toto previazanie znížili 

Body 2 4 (v podstate refaktorovanie) 

  • Vďaka bodu číslo 1 (máme testy) sa nemusíme báť, že refaktorovaním niečo pokazíme 
  • Duplikáciaúplne rovnaké riadky, podobné riadky, ktoré sa dajú upraviť na totožne a vytiahnuť von, dva krát vyjadrím to isté, len inak 
  • Vyjadruje úmysel programátora – čím väčší systém, tým je dôležitejšie jasne vyjadriť čo sme chceli kódom dosiahnuť. Dobré názvy, malé triedy a funkcie, keď používam DesignPatterny tak tak aj nazývam triedy. Najdôležitejšie je, sa o to vôbec pokúsiť. Nepovedať si, že však to funguje, skončil som. 
  • Minimalizovanie počtu tried a funkcií všetky princípy sa dajú preháňať a potom sa nám stáva, že máme milión malých tried, milión interfacov, milión malých funkcií, …. Pravidlo však najnižšiu prioritu, ale treba byť naozaj opatrný pri preháňaní s dodržiavaním všetkých princípov (aj v tejto knihe). 

Záver

sa povedať, že keď budeš nasledovať týchto X princípov, tak z teba bude programátor? Ani nie len že dobrý, ale vôbec programátor? Nie. Musíš si to vyskúšať. Musíš si sadnúť za comp a programovať. Písať. Veľa. Čím väčšie veci v živote napíšeš tým viac skúsenosti budeš mať. Tieto princípy je naozaj potrebné vedieť brať s rezervou resp. vedieť kde je ten zlatý stred.

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