Knowledge Gained by Nothing is as Simple as it Seems

在讀完大麥克對原味主廚之後,ㄚ琪要繼續讀沒有事情像表面看起來那麼簡單,故事一開始約耳用自己的軟體上的一個問題來述說他在實作前先設計了一個規格,之後還沒動工之前又改了一次規格,而且變成幾分鐘就完成。

『如果你這輩子寫過20分鐘以上的程式,可能已經發現這個很好的基本原則:沒有事情像表面看起來那麼簡單。』這就是本文的主題也是一個定理,約耳的定理吧!另外『軟體工程裡有另外一個定理,就是隨時隨地都要嘗試降低風險。其中一項必須避免的重大風險是進度風險,就是某件事花的時間比預期多。』進度風險的壞處就是你公司會倒掉,倒掉一詞約耳可以講成『印有你公司標誌的購物袋愈有可能流落到資產清算的倉庫,而同時間你的前執行長還在怨嘆「真慘啊,我們還沒有被爛公司報導前就倒了!」』這種文章寫作的能力真是佩服!

再來『「沒有事情像表面看起來那麼簡單」再加上「降低風險」只會導出一個結論:你必須先做設計再去實作。』

下面有一些事實的陳述,Kent Beck書裡頭認為不先設計而直接實作是正常,其實是不正常的,『「現在我們都用Java和XML這種高階工具,幾分鐘就可以改好程式,為什麼不直接在寫程式時做設計呢?」我的朋友,你可以替你老媽裝上輪子,不過她並不會因而變成巴士。另外如果你自認能把錯用執行緒的檔案複製函數,重整改正成先佔多工的作法,而且速度和我寫這個句子一樣快,你根本就在自己騙自己 (deep denial)。』把老媽不會變成巴士的比喻拿出來,但是我不覺得這是什麼好比喻,而且在程式裡頭,搞不好還真的可以寫成老媽變成巴士說!但這是題外話!只是重點就是說如果不先設計的話,你會寫的比約耳快,那是自欺欺人,看,我也用了成語,比自己騙自己的陳述更妥當!

另外『「不要做無謂的設計」』,也不要搞混成就是不要設計。『當Linus Torvalds痛斥設計時談的是巨大的系統,這種系統必須逐漸演進,否則就會像Multics那樣死路一條。』,所以你還是不要被Linus所說的話給騙了,以為不用設計,所以還是要當心。

『漸進式的設計和實作是好的。常常發行也是好的。』這倒是我常用而且喜歡的,這真的是不錯的一個方式,因為我們大部分人都是由不會成長大寫一個小程式,再進步到較大程式,這樣一點一滴來的吧!所以漸進式的方式,我絕對贊成。話說最近郝龍斌民調下滑很多,主因是花博跟新生高架橋的事,我有點覺得,一開始就搞那麼大,可能是能力過度被放大了,唉!辛苦大家了,看來國民黨很累了!題外話!

Print Friendly, PDF & Email

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料