對函數(shù)的輸入?yún)?shù)進行適當(dāng)?shù)臋z查
經(jīng)常會有這樣的程序:
foo(char* str)
{
int len = strlen(str);
……
}
char* GetUserName(struct user* pUser)
{
return pUser->name;
}
No!Please don’t do like that!。你應(yīng)該先判斷一下傳進來的那個指針是不是為空(NULL)。如果傳進來的指針為空的話,那么,你的一個大的系統(tǒng)就會因為這一個小的函數(shù)而崩潰。一種更好的技術(shù)是使用斷言(assert)。當(dāng)然,如果是在C++中,
使用引用要比指針好得多,但你也需要對各個參數(shù)進行檢查。寫有參數(shù)的函數(shù)時,首要工作,就是要對傳進來的所有參數(shù)進行合法性檢查。而對于傳出的參數(shù)也應(yīng)該
進行檢查,這個動作當(dāng)然應(yīng)該在函數(shù)的外部,也就是說,調(diào)用完一個函數(shù)后,應(yīng)該對其傳出的值進行檢查。當(dāng)然,檢查會浪費一點時間,但為了整個系統(tǒng)不至于出現(xiàn)
“非法操作”或是“Core Dump”的系統(tǒng)級的錯誤,多花這點時間還是很值得的。