沒有事情像表面看起來那麼簡單 - Nothing is as Simple as it Seems
http://tinyurl.com/38nl9u3
如果你這輩子寫過20分鐘以上的程式,可能已經發現這個很好的基本原則:沒有事情像表面看起來那麼簡單.
就連複製一個檔案這麼簡單的動作都充滿陷阱。如果第一個參數是目錄會如何?如果第二個參數是檔案又如何?如果目的地已經有相同檔名的檔案又會怎樣?萬一沒有寫入權限又怎麼辦?
如果檔案拷到一半出錯要如何?如果目的地是需要認證才能繼續的遠端機器又如何?如果檔案很大而連線很慢,必須顯示進度欄時又會如何?萬一傳輸速度慢到幾乎完全不動...你要等多久才放棄並傳回錯誤訊息呢?
有個好方法可以用來面試應徵測試工作的人,就是要他針對一件簡單的操作,把所有可能出錯的地方全都列舉出來。微軟對面試測試人員有個經典題目:如何測試開檔對話盒?優秀的測試人員可以滔滔不絕地列出幾十種測試項目(在你選好檔案,要按「開啟」之前,另一個使用者把原本存在的檔案殺掉了)。
你必須先做設計再去實作。
我很抱歉讓你失望了。沒錯,我知道你看過Kent Beck的書,而且現在認為不先設計而直接實作是正常的。很抱歉,這並不正常。改程式就是沒法子和改設計文件「一樣簡單 」。大家一直都這樣說,不過這並不對。「現在我們都用Java和XML這種高階工具,幾分鐘就可以改好程式,為什麼不直接在寫程式時做設計呢?」我的朋友,你可以替你老媽裝上輪子,不過她並不會因而變成巴士。另外如果你自認能把錯用執行緒的檔案複製函數,重整改正成先佔多工的作法,而且速度和我寫這個句子一樣快,你根本就在自己騙自己(deep denial)。
沒有留言:
張貼留言