[elektro] (C) programozási kérdés
Andras Huszti
kyrk at villamvadasz.hu
Sun Nov 20 12:19:24 CET 2011
Hello!
> Magasabb szinteken előszeretettel módi, hogy ha nem tudunk valamilyen
> paramétert akkor 0-val hívjuk a függvényt.
> Pl. egy bool ReadReplyFromBuf(ptr pDestBuf, pdword pBufSize) függvényt
> lehet így is használni:
> if(ReadReplyFromBuf(0, &requestedSize) &&
> (requestedSize < cMainBufSize)) {
> ReadReplyFromBuf(&MainBuf[0], &requestedSize);
> ...
> }
> ugye itt NIL a mutató, és egyből hibára szaladnál ha nem ellenőriznéd,
> viszont kíválóan használható így arra, hogy lekérdezd van-e elég adat,
> érdemes-e foglalkozni vele, stb.
Sajnos ez rossz programozoi gyakorlat. Legjobb pelda erre a realloc. Ez
a fugveny egyben, malloc, free es atmeretezo. A parameterektol fuggoen.
Ha bizonyos parametere nulla akkor maskepp mukodik. Pl ha csak meretet
kap akkor malloc, ha csak pointert akkor free. De mi itt a problema? Az
hogy ha veletlenul az ember rossz adatokkal hivja meg akkor mas lesz a
mukodese es nem derul ki. Pl tomb veletlenul el van cimezve es
felulirodik egy masik adat. Ez kerul bele a realloc fuggvenybe es kesz a
baj, nem atmeretezi a memoriat hanem felszabaditja. A programozo meg
hetekig keresi a hibat. Feleslegesen hoz letre a programozo olyan
hibalehetoseget ami mas interfacedesignnal elkerulheto lenne.
Nem szabad hogy egy valtozo tobb metainformaciot is hordozzon, mert
nagyon veszelyes. Pl rossz pelda a getChar is ami -1el ter vissza. Itt
is a karakterinformacio mellet visszadja azt hogy van-e karaketer. De
sajnos bevett gyakorlat.
More information about the Elektro
mailing list