Monday, April 20, 2009

程式開發技巧x

連續2個 if 的陷井

試問以下的程式碼, 結果為何

if (1) {
if (0) {
return 2;
}
} else {
return 1;
}


結果應該會回傳一個"不確定的值"
可能會馬上出錯
也有可能一個月才會出錯(或當掉)
然後要review code, 再加點運氣就會發現這裡可能有問題
再放上三個月, 好像不會再出錯了
當做這個問題已經好像似乎已經好像似乎...沒有把握的...解決了

這個範例只是要點出幾個潛在的問題
1)if之後要不要加else
如果每個if之後都有else, 那這個範例應該不會有機會出錯

2)預設的回傳值
也就是無論如何, 一定都會有一個預設的回傳值會傳回去

3)應該不會發生
這句話的代價可能要用時間去驗證"是不是可以獲得解決"

正確寫程式的習慣, 遠比測試1天沒發生問題, 來得重要

No comments: