曾經有個工程師對著已經上線的網站說:「別說使用者不曉得這個系統是怎麼運作的,其實已經接手那麼久的我也不知道。」
如果你對這句話心有戚戚焉的話,那你真的不孤單。其實有很多維護維護前人程式碼的工程師在在接到新的需求而去修改程式碼時,常常是很戰戰競競的,然後辦公室裡就會響起這樣的聲音:
「我記得前一個工程師說這邊加幾行程式碼就可以了,你覺得呢?」 「我直覺這樣改會出問題...有環境讓我先測試看看嗎?」 「先不管,後天活動要上了,你先改完讓它上線後再說。」 「沒有測試的話...」 「閉嘴!快去改。」 不久後... 「慘了!訂單出大問題了!你可以先還原原來的程式碼嗎?」 「不對呀!我改這邊怎麼會讓那裡出錯?」 又過了一會兒... 「你有還原嗎?!整個訂單資料大亂了呀!你一定有動到什麼東西了!」 「我全還原了!現在跑的是我沒改過前的版本!」 「不管!加班修好它!」 「我不就說沒測試的話會有問題嗎!?為什麼不聽!?」 「你老闆我老闆?再靠杯試試看!」 三天後... 「夠了!拎杯走!我不想再改這個系統了! (摔杯子) 」
|
假設今天有時間讓你調整這個系統,在不知道線上系統整體如何運作的狀況下,你會怎麼讓它容易被維護與增添新功能呢?
上週所介紹的單元測試其實還沒辦法可以讓我們立刻套用在這樣的系統上,所以本週課程的重點就在:如何為已經上線的 legacy code 加上測試。
為了達成這個目標,講師介紹了兩個招式: Web Testing 與 Refactoring 。以下我就以我的方式來介紹我所學到的心得。