szerda, május 19th, 2010 | Author: Vagabond
Ma harom tipikus programozasi hibaba is beleszaladtam, alljon itt egy memento roluk:
- Factory keszitette ojjektum: Ha egy objektumot Factory-val vagy Factory metodussal keszitesz, az nem ekvivalens a new Objektumneve() hivassal, ugyanis lehet null, anelkul, hogy hibat dobna. Az ilyen modon elkeszitett objektumokat erdemes ellenorizni, hogy ne valahol a hivaslista melyen kapjunk egy nullpointer exceptiont. (vagy az adott nyelvi megfelelojet). Ez kulonosen igaz, ha a Factory-t egy kulso file-bol inicializaltuk.
- Nem szamlalo alapu ciklusban (pl. while, foreach) szamlalot hasznalni oke. A szamlalot az elejen megnovelni, majd a vegen egy feltetelvizsgalat eseten (valami nem kovetkezett be) csokkenteni nem oke. Csak a legritkabb esetben nem lehetseges a szamlalot magasabb ertekrol inditani, es forditott feltetelvizsgalattal novelni a ciklus vegen. Konnyebben kovetheto logika es kevesebb hibalehetoseg az eredmeny.
- Egy ciklusban ugyanazt a erteket tobbszor kiszamolni gaz. Ha ezt raadasul rosszul teszed (pl. copy paste hiba miatt) akkor meg nehezen kinyomozhato programhibat is okozol.
Category: Szakmai

Gondolkodom, hogy a múltkori programomra ráhúzható-e a 2-ben említett hiba.
Széltében keresést csináltam, while ciklusban szedtem ki egy csőből a következő elemet, és közben pakoltam a másik végébe a fellelt új elemeket. Volt benne változó csökkentés, 0, 1 vagy több növelés, és vizsgálat, hogy van-e még benne feldolgozandó elem.
Na? (Azt hiszem, ez kicsit más eset, mint amit leírsz.)
A fenti pelda egy kicsit mas. A te peldadnal, ha jol ertem, ket iranyu mozgas is volt, illetve alkalmankent ugras. Amit en irtam le, az leginkabb igy nezett ki:
foreach(elem:tombelemek) { counter++; if(elem.valami) { doSomething; } else { counter--; } }ennel bonyolultabban, hogy ne legyen trivialis, amit csinal, de ez volt a lenyeg.