Gratulujeme! Úspěšně jste se přihlásili k odběru novinek Frontend Garden.
Ajaj. Při pokusu o přihlášení k odběru novinek došlo k chybě. Zkuste to prosím znovu.
Frontend Garden
  • Články
  • Slovník nové
  • Instagram
  • GitHub
3. září 2019 —
  • Nástroje
— čtení na 6 min.

Jak neztratit půl dne života kvůli středníku

Přišli jste někdy o hromadu času hledáním chyby, abyste zjistili, že máte v kódu špatně středník? Nebo závorku, či snad překlep v názvu proměnné? Klidně bych se vsadil, že ano, prostě tomu někdy neutečete. Nicméně můžete jít tomu štěstíčku trochu naproti. Ano, bude řeč o debugování.

Martin Staněk

Martin Staněk

Martin je frontend designer se zaměřením na design systémy. Kódování se věnuje přes 15 let a občas přednáší na srazech Frontendistů. Stará se o rozvoj platformy solidpixels. Více o autorovi

Web je velmi pestrá směs technologií. Od počátečního requestu v prohlížeči se toho do vykreslení stránky může dost pokazit. Umění problém najít a odstranit je naprosto základní dovednost, kterou si musí vývojář osvojit.

Nikdo, a to myslím skutečně nikdo, nepíše kód na první dobrou bez chyb. Otevřete si Twitter a vyhledejte debugging, zjistíte, že v tom nejste sami. Naštěstí máme spoustu metod a nástrojů, které nám život usnadní.

Metody debugování

Zastavit a stát!

První metoda je poměrně primitivní, ale zároveň nejdůležitější. Musíte se umět včas zastavit a začít k problému přistupovat systematicky. Zní to nudně, ale je to tak. Ono je totiž velmi snadné se začít v kódu pitvat, opakovat ty stejné kroky a refreshovat prohlížeč s očekáváním, že se to samo nějak opraví.

Já se držím metody, pokud není příčina problému za 15 minut odhalená, všeho nechávám a začínám si pokládat klíčové otázky:

  • Nachází se problém na serveru nebo v prohlížeči?
  • Je to problém funkční, nebo stylový?
  • Kdy to naposledy fungovalo? Můžu se do toho stavu vrátit?
  • Nemám v kódu nějakou syntaktickou chybu nebo překlep?
  • Uložil jsem změny a edituju vůbec správný soubor?
  • Jsem na správné větvi v Gitu? Mám aktuální data v repozitáři?
  • Koukám na lokální prostředí, nebo na produkci?
  • Nemůže to být cache? (Dost pravděpodobně ano.)

Položením podobných otázek se začnete na situaci dívat jinou optikou a je velmi pravděpodobné, že se rychle doberete příčiny problému, potažmo jeho řešení.

Odstraňte přebytečný kód a izolujte chybu

Izolace je asi nejmocnější metoda, jak se rychle dobrat zdroje nesnází. Je univerzálně použitelná na backendu i v prohlížeči. Jde o to odstranit všechno, co působí jen jako šum a odvádí naši pozornost od skutečného problému.

  • Zakomentování části kódu — Je to rychlý způsob, jak zjistit, v která část kódu je rozbitá. Např. když SASS nebo LESS zahlásí nic neříkající chybu, která ani trochu nenaznačuje, kde hledat.
  • Odstranění části DOM stromu — Typicky, když nějaký element vytéká z viewportu mimo stránku a zobrazí se vám horizontální scrollbar. Problematický element může být ve struktuře stránky kdekoli. Pomůže vám postupně mazat elementy z DOMu, dokud problém nezmizí. Toho absolutně pozicovaného prevíta dostanete.
  • Reprodukce chyby v izolovaném prostředí (např. Codepen) — Izolace je spolehlivý nástroj na ověření, zda je např. obecný bug v prohlížeči. Výhoda je hlavně ta, že se to dobře sdílí.
  • Izolujte problém pomocí debuggeru — Moderní prohlížeče mají nabušené developerské nástroje, díky kterým můžete detailně prozkoumat vykonávání JS v inkriminovaném místě.

Když nevíte, zeptejte se kachny

Popisuji problém kolegovi, a než dokončím větu, mám v hlavě řešení. Zní to povědomě? Lidský mozek je v tomto zábavný, a dokonce je jedno, jestli si zavoláte na pomoc kolegu nebo to řeknete kachničce do vany. Zní to jako pitomost, ale je to známá metoda, které se říká Rubber Duck Debugging [en].

Jste totiž nuceni situaci strukturovaně krok za krokem popsat. Obvykle vám řešení naskočí dřív, než stačíte myšlenku dokončit. Pokud vás zajímá psychologie za tímto jevem, doporučuji článek Rubber Duck Debugging Psychology [en].

Pokud se vám nechce investovat do kachničky dvě stovky (BTW našel jsem e-shop s kachničkami, který je vysázen v Comic Sans!), mně funguje popsat situaci v e-mailu nebo na Slacku. Nevýhodou je, že mi obvykle řešení naskočí téměř okamžitě potom, co ten dotaz odešlu. Pak je člověk trochu za blbce.

Vypnout a zapnout

Čas od času se stane, že to, co se odehrává na vašem monitoru, prostě nedává smysl. Vyzkoušeli jste všechno, ale systém se chová divně. Občas není zbytí a musíte zvolit radikální metodu, nekompromisně restartujte prohlížeč, server nebo celý systém. Co bylo za problém se pravděpodobně nikdy nedozvíte, ale koho to zajímá, když vše najednou zázračně běží, že jo.

Zítra je taky den

Ani kýbl kafe někdy nedokáže roztočit ty správné závity. Co jeden den řešíte hodiny, může následující den zabrat 10 minut. Je to trochu jako to mluvení s kachnou. Ve spánku váš mozek analyzuje a třídí informace, které předchozí den načerpal. Když se pak k problému vracíte, už máte všechno uleželé a díváte se na situaci jinou optikou. Občas je to strašně frustrující. Hlavně, když je řešení jeden řádek kódu.

Vyberte si správné nástroje

Zmíněné metody jsou takový základ, jak se při kódování nezbláznit. Další rovinou je využívat správné nástroje, které vás některé chyby prostě nenechají udělat.

Pryč s technickými chybami

Není nic horšího, než trávit čas hledáním chybějícího středníku. To je úkol pro počítač, který se na rozdíl od nás neunaví, ani neztratí soustředění. Minimalizovat technické chyby vám pomohou lintery a validátory.

  • Stylelint — Velmi robustní linter CSS, který za vás odhalí nejen hrubé chyby, ale umožní vám nastavit mnoho pravidel pro výstupní kód. Mrkněte na příručku Martina Michálka.
  • ESlint — ESlint analyzuje váš JS kód a hlídá kvalitu výstupu, kterou si nastavíte.
  • Validátory — Na validátory se trochu zapomíná, ale i v dnešní době jsou to užitečné utility, které vám řeknou, jestli je s výsledným kódem něco v nepořádku. Pro kontrolu využijte validátor CSS nebo HTML, případně různá rozšíření do prohlížeče.

Vývojářské nástroje

První verze Firebugu přinesla obrovské nadšení do kodérské komunity. Dnes už je to trochu pro pamětníky, ale tehdy konečně bylo možné efektivněji debugovat kód webu namísto metody pokus-omyl. Dneska jsou vývojářské nástroje standardní výbavou prohlížeče. A jsou po čertech mocné!

Mnoho vývojářů v průběhu let postupně přesedlalo z Firefoxu na Chrome. Jedním z důvodů, alespoň pro mě, byly právě Chrome Developer Tools. Jejich schopnosti se stále posouvají, nicméně na denní bázi potřebujete hlavně inspektor kódu, konzoli a debugger.

Vývojářské nástroje v Chrome

Odstraňování chyb napříč prohlížeči

Pravděpodobnost, že se nějaká chyba projeví na počítači klienta se limitně blíží jedné. Fakt mi to tak přijde. Dneska už se z testování na různých zařízeních nevylžete, dříve stačilo otestovat web v majoritním prohlížeči, a bylo hotovo. Máme desítky prohlížečů a stovky různých zařízení, na kterých musí web šlapat.

  • Testování na zařízeních — Ideální je testovat na fyzických zařízeních, je to nejspolehlivější, ale málokdo to má k dispozici. Další možností je využít webové aplikace jako BrowserStack nebo Lambdatest, které vám umožní se připojit k reálnému zařízení a přenášet obraz. Je to praktické, ale ne zrovna nejrychlejší a finančně se dost prohnete.
  • Simulátory / emulátory — Simulátory pouze reprodukují chování reálného zařízení. Pro nějakou základní představu o kvalitě implementace je lze využít, nicméně není to stoprocentně spolehlivé řešení.

Specifikace a dokumentace

Specifikace jsou možná trochu nudné čtení, nicméně v nich najdete hromadu užitečných informací. Pro frontendistu stačí mít po ruce otevřené záložky:

  • Caniuse.com — Je to jeden z projektů, u kterých si říkáte, jak jsme mohli existovat bez nich. Přehledně vám ukáže podporu různých CSS a JS vlastností v prohlížečích.
  • MDN — Velmi užitečná dokumentace webových technologií s ukázkami kódu, podporou v prohlížečích, tutoriály apod.

Komunita

Komunita je skvělý nástroj, který máte při hledání odpovědi na cokoli. Když vám webař bude tvrdit, že nikdy nenavštívil StackOverflow, tak kecá. Není rozsáhlejší studnice otázek a odpovědí na téměř jakoukoli technickou otázku. A samozřejmě nesmím vynechat skvělou skupinu Frontendisti.


Debugování je nedílnou součástí vývoje. Není to otázka, zda to chcete dělat, prostě musíte. Metody popsané v tomto článku jsou takový základ, každý si časem najde své vlastní postupy. Platí ale jedna univerzální rada na závěr: vždycky nechte za sebe pracovat počítač. A v ušetřeném čase zajděte na kafe!


Martin Staněk

Martin Staněk

Martin je frontend designer se zaměřením na design systémy. Kódování se věnuje přes 15 let a občas přednáší na srazech Frontendistů. Stará se o rozvoj platformy solidpixels. Více o autorovi

Další články od autora:

  • Webdesign bez kódu
Více k tématu:
  • Nástroje

Sdílejte

Líbí se vám článek? Podpořte jej sdílením!

X (Twitter) Facebook LinkedIn

Komentujte

Chcete k článku něco doplnit? Našli jste chybu? Napište e-mail.

Adam Kudrna

Nejnovější články

WebExpo — čtení na 3 min.

Pozvánka na WebExpo 2025

Rok se s rokem sešel, přichází měsíc květen a s ním WebExpo 2025, které se po nejistých letech usadilo v tomto jarním termínu. Jaké bude?

  • Adam Kudrna
    Adam Kudrna
Pozvánka na WebExpo 2025
JavaScript — čtení na 10 min.

Jak předcházet chaotické organizaci npm skriptů

Řešíte, jak organizovat skripty napříč projekty přehledně a konzistentně? Inspirujte se systémem, který zjednoduší práci vám i kolegům.

  • Tomáš Litera
    Tomáš Litera
Jak předcházet chaotické organizaci npm skriptů
Reportáž — čtení na 2 min.

FrontKon 2024 obrazem

Frontendisti letos připravili třetí ročník konference FrontKon. Ta se letos historicky poprvé odehrála naživo v Praze, a to v prostorách O2 Universum.

  • Kateřina Klouček Dlouhá
    Kateřina Klouček Dlouhá
FrontKon 2024 obrazem

Odběr novinek

Zadejte svůj e-mail a nenechte si ujít další nové články!

Odesláním formuláře souhlasíte se .
Zpracování osobních údajů probíhá za účelem zasílání newsletteru. Můžete se spolehnout, že vaše osobní údaje nebudeme s nikým sdílet. Z newsletteru se můžete kdykoli odhlásit. Stejně tak můžete kdykoli požádat o úplné smazání svých osobních údajů z naší databáze.
Zkontrolujte svoji e-mailovou schránku a potvrďte své přihlášení kliknutím na odkaz.

Všechna témata

  • Bootstrap
  • CSS
  • Design
  • Dokumentace
  • HTML
  • ITCSS
  • JavaScript
  • Kariéra
  • Kvalita kódu
  • Nástroje
  • No-code
  • Přístupnost
  • PWA
  • Reportáž
  • Rozhovor
  • Rychlost
  • Sass
  • Spolupráce
  • Typografie
  • Variable fonts
  • WebExpo
  • ✏️ Napište článek
  • Autoři
  • Cookies
  • Instagram
  • GitHub

Obsah na tomto webu je publikován pod licencí Creative Commons CC BY-NC 4.0.
Frontend Garden vysázel, zastřihuje a okopává (s ♥️) Adam Kudrna.
Založeno v květnu 2019.