Debugging. Kaip rasti klaidas savo kode?

bug-369229_1920

Dažnai parašius ir paleidus kelias kodo eilutes,  vietoje tikėto rezultato gauname tik tuščią kompiuterio ekraną arba klaidą naršyklėje. Šiame straipsnyje pamėginsiu sudėlioti planą, kaip taisyti savo kodą ir surasti pačias neįtikėčiausias klaidas.

Kaip atsiranda programavimo klaidos?

Labai dažnai programavime pasitaiko sintaksės arba rašybos klaidų. Rasti jas dažniausiai nėra sunku. Pavyzdžiui, kai rašant kodą panaudojame simbolius, kurie neturėtų būti naudojami, gauname sintaksės klaidą.

Pasitaiko, kai iškviesdami funkcijas ar kintamuosus netaisyklingai parašome jų pavadinimus, todėl gauname klaidą kuri nurodo, kad toks kintamasis neegzistuoja.

Kita, žymiai painesnė klaidų grupė, tai loginės ir mąstymo klaidos. Dažnai galvojame, kad kodas veikia vienaip, kai iš tiesų viskas veikia visai kitaip. Paaiškinti logines klaidas sunku, ypatingai mažai patirties turinčiam programuotojui. Suvokimas, kad darai netinkamai ateina tik su laiku ir patirtimi.

Loginės klaidos taip pat pasitaiko, kai veikianti programa negali susidoroti su parametrais apie kuriuos nebuvome pagalvoje. Pavyzdžiui bandome išsaugoti vartotojo vardą sistemoje ir nepagalvojame, kad laukelis skirtas įvesti minėtus duomenis turi validuoti ne tik raides, bet ir kitus simbolius.

Kaip ieškoti klaidų?

1. Pirmiausia surask tašką iki kurio programa vis dar veikė!

Pavyzdžiui: įsivaizduok, kad kuri svetainę ir kažkuri CSS taisyklė neveikia.

  • Patikrink ar užsikrovė CSS failas?
  • Ar CSS faile yra tavo CSS taisyklė?
  • Ar puslapyje atsirado elementas, kurio stilių nori pakeisti?
  • Ar CSS faile nėra kitų taisyklių, kurios bando redaguoti tą patį elementą?
  • Ar nėra JS kodo, kuris bando redaguoti tą patį elementą?

Tai tik pavyzdys, kaip galima ieškoti klaidų. Noriu pabrėžti, kad šis klaidų ieškojimo procesas turi strategiją ir nėra atsitiktinis. Pradedame nuo pačio tolimiausio taško ir po mažą žingsnelį tikriname ar kodas vis dar veikia.  Suradus vietą kur kodas veikia ne taip kaip tikimės, tampa daug lengviau išspręsti problemą.

2. Paaiškink savo problemą kitam žmogui!

Labai dažnai vien bandymas nupasakoti klaidą kitam žmogui, parodo kur yra klaidos priežastis. Jeigu tokio žmogaus nėra, kuriam galėtume papasakoti apie savo problema, galime pasinaudoti “Rubber duck debugging” metodika.

Šio metodo esminė idėja yra tokia, kad bandydami kažkam kitam logiškai paaiškinti, kaip priėjome prie esamos problemos, sukeliame sau gilesnį problemos suvokimą ir pažvelgiame į problemą iš šalies. Todėl naudodami šį metodą, į pagalbą galime pasitelkti ne tik žmogų, bet ir bet kokį daiktą. Svarbiausia logiškai dėstyti mintis, kaip gavote turimą klaidą.

3. Pasinaudok Interneto pagalba!

Jei gavai klaidos pranešimą, visada gali paieškoti informacijos internete.

Programuojant su AngularJS dažnai gauname klaidos kodą bei aprašymą naršyklės konsolėje. Paieškojus detalesnės informacijos internete, galime nesunkiai rasti patarimų, kaip išspręsti šią klaidą. Pavyzdžiui rašant Javascript kodą gauname tokią klaidą: “Uncaught TypeError: undefined is not a function.” Šios klaidos paaiškinimą ar net sprendimą labai lengva rasti internete.

Viena is populiariausių svetainių, kurioje galite rasti sprendimus įvairioms programavimo problemoms yra www.stackoverflow.com.

Klaidų išvengti sunku, todėl ypatingai svarbu išmokti jas surasti ir pataisyti. Tikimės, kad šis trumpas straipsnis padės ir užves ant kelio sprendžiant klaidas.

Sėkmingo klaidų taisymo!