Pronalaženje grešaka u kodu

Učlanjen(a)
13.08.2015
Poruka
6
Otkrivanje grešaka u kodu može dugo trajati ako ne znate kako da ih pronađete. Neki od načina za ispravljanje grešaka:

1. Ponekad je uključivanje druge osobe odličan način da otkrijete šta ste propustili. Druga osoba ne zna ništa o istoriji razvoja našeg programa i nije upoznata sa našim kodom. Ona će naš rad gledati osveženim umom i brže će pronaći greške. Inače, bitno je da svako ima tendenciju da pročita kod na drugačiji način. Zato, druga osoba će lakše zapaziti ono šta Vi niste.

2. Drugi način je da rečima objasnite problem nekom drugom. Ako kolega ne može da pogleda Vaš kod, možda može da Vas sasluša. Druga osoba će se udubiti u situaciju koju opisujete, a Vi ćete manje razmišljati o problemu. Manje ćete gubiti vremena pokušavajući da saznate zašto kod ne radi.

3. Testirali ste program, ali on i dalje ne radi. Nešto nedostaje. Testirajte ponovo, to Vam može pomoći da otkrijete sve mane i nedostatke. Nikada nemojte biti sigurni da ste sve uradili savršeno. Dobar način je da testiranja izvršite sa drugim podacima i ulaznim parametrima. Drugačija kombinacija parametara može Vam dati različite, ali bolje rezultate nego prvi put.

4. Napravite pauzu. Ponekad je najbolje da sve zaustavite. Nek se Vaš mozak malo odmori. Popijte kafu, idite u teretanu, izađite sa prijateljima. To što trenutno ne radite na konkretnom problemu ne znači da ste na njega zaboravili. Podsvesno ćete razmišljati o tome. Onda, kada se najmanje nadate, možete doći do ideje koja će Vam pomoći da otklonite nedostatak.

Izvor: Telegraf.rs
 
Učlanjen(a)
06.10.2013
Poruka
145
4. Najboljiii predlog. Milion puta mi je doslo da bacim i monitor i kuciste kroz prozor , ali izadjem na 2-3 sata , duplo toceno pivo i onda se setim , zaboravio sam da stavim ili " ' " ili da zatvorim kod { } . To mi se desavalo u php-u. Sa Python-om vec nemam nekih problema :)
 
Učlanjen(a)
23.02.2012
Poruka
1
Veoma korisna stvar kod trazenja greske u kodu moze biti debugger. Sva ozbiljnija razvojna okruzenja (Eclipse, Microsoft Visual Studio, NetBeans...) imaju u sebi ugradjene debugger-e. Pomocu njega mozete postavljati tzv. breakpoint-e, tj. obeleziti liniju u kodu do koje mislite da vam program radi. Debugger-i takodje sadrze prozor u kome se mogu posmatrati vrednosti promenljivih (U Eclipse-u se ovaj prozor zove "Variables", u Visual Studiju se zove "Watch"...). Pokretanjem programa, izvrsavanje ce se zaustaviti na obelezenoj liniji u kodu (na breakpoint-u). Nakon toga se mozete kretati korak po korak u programu ("Step Into" i "Step Over" dugmad). Posmatranjem kako se promenljive menjaju korak po korak mozete uociti kada je neka promenljiva dobila neocekivanu vrednost. A ako se malo bolje udubite mozete uociti i zbog cega je dobila tu vrednost...
 
Učlanjen(a)
20.09.2014
Poruka
1.861
Mijura skini PureBasic, da vidis kako divan programcic, jos u samom startu moze da proveris sintaksu. Kod njega isto postoji obelezavanje lose linije. Takodje pravi exe fajl od vaseg projekta.
Divan programerski dodatak imajuci u vidu da mu knjigica ide na 1600 i kusur strana.

Sto se tice trazenja gresaka to nekad ispadne vrlo zeznuto, pa je projekt bolje snimati malo cesce. Ispada da je bolje krenuti od snimljenog dela nego li traziti gresku, bar ponekad.
 
Član
Učlanjen(a)
16.11.2009
Poruka
205
Za složenije projekte obavezno neki source version control, postoje dodaci za većinu razvojnih okruženja kao i za neke popularne editore koda.

Jednostavno, kada se pri nekoj izmeni naiđe na problem, proveri se prethodna verzija, i ako radi, ova nova se poništi ili se uporedi sa verzijom koja radi ispravno.


Takođe, ako se radi sa veoma ozbiljnim projektima (ne u smislu obima, već u smislu novca koji je u igri, kao što je softver za online kladionice i sl.), tu je praksa da onaj ko piše kod uopšte ne proverava taj kod, niti ga testira niti kompajlira, to radi druga ekipa.

Na primer, tako je u IGT-u u Beograd, kad je u pitanju ekipa koja radi softver za online klađenje, piše se u C++, i onaj ko kuca kod niti šta testira niti kompajlira.
Takođe, apsulutno im je zabranjeno kopiranje koda bilo odakle, posebno iz drugih projekata - ne znam šta je razlog, da li su problem intelektualna prava ili može doći do logičkih grešaka ako se kopirani kod ne ispravi kako treba, ali znam da logičke greške često dolaze od kopiranog koda, posebno ako se ne obrati pažnja na lokalne i globalne promenljive.


Debagovanje funkcioniše kod razvoja klasičnih aplikacija manje složenosti gde je moguće otkriti logičke greške, ali to je lako ako se greška manifestuje sa malom količinom podataka. Šta ako problem nastaje tek sa ogromnom količinom podataka ili ako je npr. u pitanju web servis kod koga se problem pojavi tek kad mu pristupi 1000 ili 10000000 korisnika?

Zato ozbiljni naručioci obavezno traže da razvijene aplikacije prođu standardne testove, tzv "unit testing"; recimo, za PHP se koristi PHPUnit, za Javu JUnit, itd.


Dakle, sa greškama se bori na jedan način kad pišete aplikacijice ili delove aplikacija sa nekoliko desetina do par stotina linija koda, a potpuno je druga priča kad se rade složene aplikacije koje u jednom fajlu imaju po nekoliko hiljada linija koda, posebno kad je u pitanju GUI programiranje.
 
Natrag
Top