SlideShare uma empresa Scribd logo
1 de 49
Baixar para ler offline
Kvalita kódu
Adam Kudrna — Frontendisti — 9. 5. 2018
1 —
2 —

3 —
4 —
K čemu je kvalitní kód
Čím se vyznačuje
kvalitní CSS kód
Jak psát kvalitní kód
Code review
1 —
 K čemu je
kvalitní kód
Kvalitní software
Proč je kvalitní kód
důležitý?
Odlišuje amatéry

od profesionálů
Čistý kód, který funguje
2 —
 Čím se vyznačuje
kvalitní CSS kód
Udržovatelnost
Rozšiřitelnost
Výkonnost
Bezchybnost
3 —
 Jak psát kvalitní
CSS kód
A. Udržovatelnost
B. Rozšiřitelnost
C. Výkonnost
D. Bezchybnost
A. Udržovatelnost
•Verzování – Git
A. Udržovatelnost
•Verzování – Git
•Struktura CSS souborů
A. Udržovatelnost
•Verzování – Git
•Struktura CSS souborů
•Jednotný coding style: Editorconfig + Stylelint
http://editorconfig.org
• https://stylelint.io
• https://github.com/stylelint/stylelint-config-standard
• https://github.com/visionappscz/stylelint-config-visionapps
• https://github.com/visionappscz/stylelint-config-visionapps-order
A. Udržovatelnost
•Verzování – Git
•Struktura CSS souborů
•Jednotný coding style: Editorconfig + Stylelint
•Metodiky: BEM, OOCSS, SMACSS, ITCSS
.branding-active #sidebar .navigation h2 { … }
.table-responsive
.product-preview--large .product-preview__title
?
A. Udržovatelnost
•Verzování – Git
•Struktura CSS souborů
•Jednotný coding style: Editorconfig + Stylelint
•Metodiky: BEM, OOCSS, SMACSS, ITCSS
•Efektivní využití preprocesorů: SASS, LESS
A. Udržovatelnost
•Verzování – Git
•Struktura CSS souborů
•Jednotný coding style: Editorconfig + Stylelint
•Metodiky: BEM, OOCSS, SMACSS, ITCSS
•Efektivní využití preprocesorů: SASS, LESS
•Jednoduchost a co nejmenší velikost zdrojového CSS
B. Rozšiřitelnost
C. Výkonnost
•Optimalizace načítání výstupního CSS
C. Výkonnost
•Optimalizace načítání výstupního CSS
•Efektivní CSS selektory
.nav li a { … }
 .nav > li > a { … }
C. Výkonnost
•Optimalizace načítání výstupního CSS
•Efektivní CSS selektory
•Eliminace na výkon náročných efektů
D. Bezchybnost
• Automatické testy, lintování (Stylelint)
D. Bezchybnost
• Automatické testy, lintování (Stylelint)
• Robustnost: buď připraven (na různé vstupy)
D. Bezchybnost
• Automatické testy, lintování (Stylelint)
• Robustnost: buď připraven (na různé vstupy)
• Testování v prohlížečích
https://browsersync.io
https://www.browserstack.com
4 —
 Code review

„ Code review je proces, který zajistí, že každou změnu
v kódu uvidí další osoba, která ji může připomínkovat.“
https://www.zdrojak.cz/clanky/code-reviews-praxi/
— Josef Reidinger
Proč dělat code review
• Lepší kvalita kódu
• Udržení výstupní kvality
• Lepší zastupitelnost v týmu
• Rychlejší zaučení nových kolegů
Jak připravit změnu
• Usnadnit kolegům code review:
• Automatizovat co se dá: kontrola coding style, testy
• Dělat malé změny, velké změny v menších krocích
• Ověřit, že změna splňuje veškerá kritéria
• Boy scout rule
Jak dělat code review
• Být konstruktivní
• Být konzistentní
• Vzájemně se respektovat
• Vyhnout se emocím
• Dobré věci pochválit
Nástroje
1 —
2 —

3 —
4 —
K čemu je kvalitní kód
Čím se vyznačuje
kvalitní CSS kód
Jak psát kvalitní kód
Code review
Frontend-školení.cz
@AdamKudrna
www.visionapps.cz
Díky!

Mais conteúdo relacionado

Semelhante a Kvalita kódu

Webová prezentace - case study - Squaris Consultants
Webová prezentace - case study - Squaris ConsultantsWebová prezentace - case study - Squaris Consultants
Webová prezentace - case study - Squaris ConsultantsSun Marketing
 
20101124 Aplikované nástroje SW inženýra
20101124 Aplikované nástroje SW inženýra20101124 Aplikované nástroje SW inženýra
20101124 Aplikované nástroje SW inženýraJiří Mareš
 
Continuous integration pro Symfony/PHP aplikaci s Dockerem v GitLabu [CZ]
Continuous integration pro Symfony/PHP aplikaci s Dockerem v GitLabu [CZ]Continuous integration pro Symfony/PHP aplikaci s Dockerem v GitLabu [CZ]
Continuous integration pro Symfony/PHP aplikaci s Dockerem v GitLabu [CZ]Vašek Purchart
 
Vývoj frontendu na redakčním systému? ... aneb jak udržet pořádek v š...
Vývoj frontendu na redakčním systému? ... aneb jak udržet pořádek v š...Vývoj frontendu na redakčním systému? ... aneb jak udržet pořádek v š...
Vývoj frontendu na redakčním systému? ... aneb jak udržet pořádek v š...Martin Pešout
 
Komponenty v kaskákdě
Komponenty v kaskákděKomponenty v kaskákdě
Komponenty v kaskákděFilip Mares
 
Čtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScriptČtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScriptCtvrtkoncz
 
20091202 Aplikované nástroje SW inženýra
20091202 Aplikované nástroje SW inženýra20091202 Aplikované nástroje SW inženýra
20091202 Aplikované nástroje SW inženýraJiří Mareš
 
Optimalizace webových aplikací
Optimalizace webových aplikacíOptimalizace webových aplikací
Optimalizace webových aplikacíVašek Purchart
 
SEO Date #3: Michal Doskočil - Case study AutoPalace: Maximalizace SEO potenc...
SEO Date #3: Michal Doskočil - Case study AutoPalace: Maximalizace SEO potenc...SEO Date #3: Michal Doskočil - Case study AutoPalace: Maximalizace SEO potenc...
SEO Date #3: Michal Doskočil - Case study AutoPalace: Maximalizace SEO potenc...Taste
 
Na co si dát pozor, než ve WordPressu nainstalujete plugin nebo šablonu
 Na co si dát pozor, než ve WordPressu nainstalujete plugin nebo šablonu Na co si dát pozor, než ve WordPressu nainstalujete plugin nebo šablonu
Na co si dát pozor, než ve WordPressu nainstalujete plugin nebo šablonuVlastimil Ott
 
Odborná snídaně 20.9. - Agile@DevOps - 2. část
Odborná snídaně 20.9. - Agile@DevOps - 2. částOdborná snídaně 20.9. - Agile@DevOps - 2. část
Odborná snídaně 20.9. - Agile@DevOps - 2. částProfinit
 
Oxygen Builder - Kyslík pro WordPress
Oxygen Builder - Kyslík pro WordPressOxygen Builder - Kyslík pro WordPress
Oxygen Builder - Kyslík pro WordPressAleš Sýkora
 
Prezentace jak zrychlit načítání webu
Prezentace jak zrychlit načítání webuPrezentace jak zrychlit načítání webu
Prezentace jak zrychlit načítání webuSUPERKODERS
 
Webová prezentace - case study - DHL Express (Slovakia)
Webová prezentace - case study - DHL Express (Slovakia)Webová prezentace - case study - DHL Express (Slovakia)
Webová prezentace - case study - DHL Express (Slovakia)Sun Marketing
 
Styling React Native Applications
Styling React Native ApplicationsStyling React Native Applications
Styling React Native ApplicationsJan Maršíček
 
KeePass: Základy, pokročilé využití a KeePass Enterprise (čtvrtek, 14.4.2022)
KeePass: Základy, pokročilé využití a KeePass Enterprise (čtvrtek, 14.4.2022)KeePass: Základy, pokročilé využití a KeePass Enterprise (čtvrtek, 14.4.2022)
KeePass: Základy, pokročilé využití a KeePass Enterprise (čtvrtek, 14.4.2022)Michal ZOBEC
 
20110511 Vývoj software - produktivně, efektivně, kvalitně
20110511 Vývoj software - produktivně, efektivně, kvalitně20110511 Vývoj software - produktivně, efektivně, kvalitně
20110511 Vývoj software - produktivně, efektivně, kvalitněJiří Mareš
 

Semelhante a Kvalita kódu (20)

Webová prezentace - case study - Squaris Consultants
Webová prezentace - case study - Squaris ConsultantsWebová prezentace - case study - Squaris Consultants
Webová prezentace - case study - Squaris Consultants
 
20101124 Aplikované nástroje SW inženýra
20101124 Aplikované nástroje SW inženýra20101124 Aplikované nástroje SW inženýra
20101124 Aplikované nástroje SW inženýra
 
Continuous integration pro Symfony/PHP aplikaci s Dockerem v GitLabu [CZ]
Continuous integration pro Symfony/PHP aplikaci s Dockerem v GitLabu [CZ]Continuous integration pro Symfony/PHP aplikaci s Dockerem v GitLabu [CZ]
Continuous integration pro Symfony/PHP aplikaci s Dockerem v GitLabu [CZ]
 
Vývoj frontendu na redakčním systému? ... aneb jak udržet pořádek v š...
Vývoj frontendu na redakčním systému? ... aneb jak udržet pořádek v š...Vývoj frontendu na redakčním systému? ... aneb jak udržet pořádek v š...
Vývoj frontendu na redakčním systému? ... aneb jak udržet pořádek v š...
 
Komponenty v kaskákdě
Komponenty v kaskákděKomponenty v kaskákdě
Komponenty v kaskákdě
 
TNPW2-2014-03
TNPW2-2014-03TNPW2-2014-03
TNPW2-2014-03
 
Čtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScriptČtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScript
 
20091202 Aplikované nástroje SW inženýra
20091202 Aplikované nástroje SW inženýra20091202 Aplikované nástroje SW inženýra
20091202 Aplikované nástroje SW inženýra
 
Optimalizace webových aplikací
Optimalizace webových aplikacíOptimalizace webových aplikací
Optimalizace webových aplikací
 
SEO Date #3: Michal Doskočil - Case study AutoPalace: Maximalizace SEO potenc...
SEO Date #3: Michal Doskočil - Case study AutoPalace: Maximalizace SEO potenc...SEO Date #3: Michal Doskočil - Case study AutoPalace: Maximalizace SEO potenc...
SEO Date #3: Michal Doskočil - Case study AutoPalace: Maximalizace SEO potenc...
 
Na co si dát pozor, než ve WordPressu nainstalujete plugin nebo šablonu
 Na co si dát pozor, než ve WordPressu nainstalujete plugin nebo šablonu Na co si dát pozor, než ve WordPressu nainstalujete plugin nebo šablonu
Na co si dát pozor, než ve WordPressu nainstalujete plugin nebo šablonu
 
Odborná snídaně 20.9. - Agile@DevOps - 2. část
Odborná snídaně 20.9. - Agile@DevOps - 2. částOdborná snídaně 20.9. - Agile@DevOps - 2. část
Odborná snídaně 20.9. - Agile@DevOps - 2. část
 
Oxygen Builder - Kyslík pro WordPress
Oxygen Builder - Kyslík pro WordPressOxygen Builder - Kyslík pro WordPress
Oxygen Builder - Kyslík pro WordPress
 
Prezentace jak zrychlit načítání webu
Prezentace jak zrychlit načítání webuPrezentace jak zrychlit načítání webu
Prezentace jak zrychlit načítání webu
 
TNPW2-2013-03
TNPW2-2013-03TNPW2-2013-03
TNPW2-2013-03
 
TNPW2-2016-03
TNPW2-2016-03TNPW2-2016-03
TNPW2-2016-03
 
Webová prezentace - case study - DHL Express (Slovakia)
Webová prezentace - case study - DHL Express (Slovakia)Webová prezentace - case study - DHL Express (Slovakia)
Webová prezentace - case study - DHL Express (Slovakia)
 
Styling React Native Applications
Styling React Native ApplicationsStyling React Native Applications
Styling React Native Applications
 
KeePass: Základy, pokročilé využití a KeePass Enterprise (čtvrtek, 14.4.2022)
KeePass: Základy, pokročilé využití a KeePass Enterprise (čtvrtek, 14.4.2022)KeePass: Základy, pokročilé využití a KeePass Enterprise (čtvrtek, 14.4.2022)
KeePass: Základy, pokročilé využití a KeePass Enterprise (čtvrtek, 14.4.2022)
 
20110511 Vývoj software - produktivně, efektivně, kvalitně
20110511 Vývoj software - produktivně, efektivně, kvalitně20110511 Vývoj software - produktivně, efektivně, kvalitně
20110511 Vývoj software - produktivně, efektivně, kvalitně
 

Mais de Adam Kudrna

Design systém 1.0
Design systém 1.0Design systém 1.0
Design systém 1.0Adam Kudrna
 
UX a design systémy
UX a design systémyUX a design systémy
UX a design systémyAdam Kudrna
 
TwigX: pište PHP šablony jako v Reactu
TwigX: pište PHP šablony jako v ReactuTwigX: pište PHP šablony jako v Reactu
TwigX: pište PHP šablony jako v ReactuAdam Kudrna
 
Nové CSS vlastnosti pro rok 2022 a jak je využít
Nové CSS vlastnosti pro rok 2022 a jak je využítNové CSS vlastnosti pro rok 2022 a jak je využít
Nové CSS vlastnosti pro rok 2022 a jak je využítAdam Kudrna
 
ITCSS — škálovatelná CSS architektura
ITCSS — škálovatelná CSS architekturaITCSS — škálovatelná CSS architektura
ITCSS — škálovatelná CSS architekturaAdam Kudrna
 
CSS for Design Systems
CSS for Design SystemsCSS for Design Systems
CSS for Design SystemsAdam Kudrna
 
SUIT CSS vs. BEM
SUIT CSS vs. BEMSUIT CSS vs. BEM
SUIT CSS vs. BEMAdam Kudrna
 
CSS pro design systémy
CSS pro design systémyCSS pro design systémy
CSS pro design systémyAdam Kudrna
 
TwigYard – The Final Solution for Small Websites
TwigYard – The Final Solution for Small WebsitesTwigYard – The Final Solution for Small Websites
TwigYard – The Final Solution for Small WebsitesAdam Kudrna
 
HTML prototypování
HTML prototypováníHTML prototypování
HTML prototypováníAdam Kudrna
 
Photoshop v dnešním workflow frontendisty
Photoshop v dnešním workflow frontendistyPhotoshop v dnešním workflow frontendisty
Photoshop v dnešním workflow frontendistyAdam Kudrna
 
Bootstrap – Frontendisti 26. 6. 2014, Brno
Bootstrap – Frontendisti 26. 6. 2014, BrnoBootstrap – Frontendisti 26. 6. 2014, Brno
Bootstrap – Frontendisti 26. 6. 2014, BrnoAdam Kudrna
 

Mais de Adam Kudrna (13)

Design systém 1.0
Design systém 1.0Design systém 1.0
Design systém 1.0
 
UX a design systémy
UX a design systémyUX a design systémy
UX a design systémy
 
TwigX: pište PHP šablony jako v Reactu
TwigX: pište PHP šablony jako v ReactuTwigX: pište PHP šablony jako v Reactu
TwigX: pište PHP šablony jako v Reactu
 
Nové CSS vlastnosti pro rok 2022 a jak je využít
Nové CSS vlastnosti pro rok 2022 a jak je využítNové CSS vlastnosti pro rok 2022 a jak je využít
Nové CSS vlastnosti pro rok 2022 a jak je využít
 
ITCSS — škálovatelná CSS architektura
ITCSS — škálovatelná CSS architekturaITCSS — škálovatelná CSS architektura
ITCSS — škálovatelná CSS architektura
 
CSS for Design Systems
CSS for Design SystemsCSS for Design Systems
CSS for Design Systems
 
SUIT CSS vs. BEM
SUIT CSS vs. BEMSUIT CSS vs. BEM
SUIT CSS vs. BEM
 
CSS pro design systémy
CSS pro design systémyCSS pro design systémy
CSS pro design systémy
 
Bootstrap 4
Bootstrap 4Bootstrap 4
Bootstrap 4
 
TwigYard – The Final Solution for Small Websites
TwigYard – The Final Solution for Small WebsitesTwigYard – The Final Solution for Small Websites
TwigYard – The Final Solution for Small Websites
 
HTML prototypování
HTML prototypováníHTML prototypování
HTML prototypování
 
Photoshop v dnešním workflow frontendisty
Photoshop v dnešním workflow frontendistyPhotoshop v dnešním workflow frontendisty
Photoshop v dnešním workflow frontendisty
 
Bootstrap – Frontendisti 26. 6. 2014, Brno
Bootstrap – Frontendisti 26. 6. 2014, BrnoBootstrap – Frontendisti 26. 6. 2014, Brno
Bootstrap – Frontendisti 26. 6. 2014, Brno
 

Kvalita kódu