( TCH | 2020. 09. 26., szo – 20:19 )

> Lehetnek kis fv-ek is. Pl., ami egy sima tömb idx-edik elemét visszaadja (azért lehet érdemes fv-be tenni, mert debug mode-ban assert-elhet). És ezt simán hívhatod egy ciklus közepén is. Pl. C++-ban teljesen tipikus az ilyen, lásd std::vector::operator[].

Release-ben nem célszerűbb ezt inline megoldani? Csak a függvényhívás többe kerül időben, mint magának a függvénynek a végrehajtása, ha tényleg olyan pici.

> Nem. Ellenőrzés legyen ott, ahova való. Én csak annyit állítok, hogy nem kell minden fv-ben ellenőrizni, ha egy feljebbi réteg már leellenőrizte az adott dolgot.

Ha leellenőrizte igen, ezt vitattuk geleivel is, hogy teljesen felesleges, ha le van ellenőrizve, de ehhez az kell, hogy aki a feljebbi réteget írta, az le is ellenőrizze.

> Teljesen normális, hogy egy API-nak a felülete ellenőriz, de alatta már semmi.

És itt van a lényeg, erről volt szó, ezért hurrogtak le. A topicban többször is elhangzott a NULL-check, ill. a range check feleslegessége és a szálindító kommentben pont a standard C lib API-ját hozta példának a kolléga, hogy az se ellenőriz, mert minek, ellenőrizze, aki hívja. És itt jön képbe, hogy pl. a GLibc hemzseg a sechole-októl, kinyitja az ember ezt a listát és tele van mindenféle buffer alapú sérülékenységgel.