試問以下的程式碼, 結果為何
if (1) {
if (0) {
return 2;
}
} else {
return 1;
}
結果應該會回傳一個"不確定的值"
可能會馬上出錯
也有可能一個月才會出錯(或當掉)
然後要review code, 再加點運氣就會發現這裡可能有問題
再放上三個月, 好像不會再出錯了
當做這個問題已經好像似乎已經好像似乎...沒有把握的...解決了
這個範例只是要點出幾個潛在的問題
1)if之後要不要加else
如果每個if之後都有else, 那這個範例應該不會有機會出錯
2)預設的回傳值
也就是無論如何, 一定都會有一個預設的回傳值會傳回去
3)應該不會發生
這句話的代價可能要用時間去驗證"是不是可以獲得解決"
正確寫程式的習慣, 遠比測試1天沒發生問題, 來得重要
No comments:
Post a Comment