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