某個便宜的銷售系統使用上都還好,等到開放給客戶使用之後突然出問題,所有檔案無預警地全部消失。某人花了十小時追查,發現以下的程式碼:
function terminate() {
exec("rm -r /var/public_www/$_SESSION['Tempfile']");
}
讓我想起第一次正式工作時寫DOS下的繪圖系統,而且是沒有DOS extender的16位元程式。在圖塊搬移時要不斷偵測64K segment邊界,遇到顯示記憶體和圖塊來源的邊界時都要特別處理。程式寫到煩了,於是在兩者都發生的狀況就只寫了一行abort()之類的東西,然後祈求這種狀況不會發生。這種願望當然是不可能實現的,果然不久之後就有某人回報這個問題,而我也只好乖乖地去做本來就該做好的事。這與約耳測試裡所說的infinite defects methodology:要計算指定字串高度時直接寫return 12,有異曲同工之妙。不過自此之後我比較能面對現實,也愈來愈相信墨菲定律了。
=== 本文結束 ===