快跑,阿甘
今天(2005.3.19)帶了一隻小狗狗回家,實際上我研究了很久也沒搞清楚它究竟是什麼品種,像博美,又似蠟腸,估計是因為兩個對象的藕合程度太高,造成了介面汙染。狗狗很小,和我的拖鞋差不多大,棕色的短毛,穿著藍色的衣服在地上動來動去的時候,本身就很像一隻拖鞋。我堅持要給它取名叫“巴蒂”,以遂我多年的夙願,但是老婆認為小狗狗路都走不穩的樣子,取這個名字實在匪夷所思,其實我自己也覺得這樣做會違反命名規範,容易導致系統不易維護,而且白岩松的兒子好象也叫這個名字,重名的話,估計編譯通不過。後來我覺得它應該叫“臭臭”,因為它的味道實在不夠“物件導向”,估計Martin Fowler所謂的bad smell就是如此,老婆又嫌有礙觀瞻。選來選去,還是叫“阿甘”吧,希望它想阿甘一樣生命力旺盛,況且它傻傻的樣子也算名副其實。可愛的阿甘,你會有怎樣新奇的生活呢?
引入了新的介面,造成系統需要大面積調整。我和老婆忙裡忙外,給它做窩、煮飯、洗澡、剪指甲,整個過程中老婆每隔5分鐘就跑過去捧著小狗狗瞅來看去愛不釋手,造成開發速度嚴重下降,而且幾乎沒有做任何單元測試,作為項目負責人,我很生氣,後果很嚴重。但是也沒辦法,新的介面沒有提供任何文檔可以參考,只能不停的查看原始碼了。到後來,發現很多設計都不合理,只好推倒重來。我建議把每項工作都抽象出一個介面,通過Factory 方法提供多中實現,但是成本太高,只好作罷。
晚上我們吃飯的時候,麻煩就來了。新的介面和我們家庭的舊有系統整合得不好,相容性也有問題。阿甘吃飯的時候把整個客廳和它自己弄得到處都是飯粒,它還開心的到處打滾,老婆一向愛乾淨,這時候臉都綠了,寒……..,找地方躲起來為妙,隨後的10分鐘發生了什麼事情,不明。從後來的現場來看,我也不想知道。
由於系統前期設計就很不完善,開發過程中又缺少單元測試,系統整合之後也沒有Beta測試也壓力測試,單純依靠重構始終解決不了問題,當新的介面真的開始執行商務邏輯的時候,一個接一個的bug暴露出來了。阿甘始終不肯乖乖就寢,困得打呵欠的同時又不停的在窩裡翻來滾去,不停嘶叫。我和老婆始終不得要領,急得團團轉。沒辦法,人員培訓和技術儲備不到位,一旦遇到新的客戶需求,就束手無策。眼看著新的功能模組始終無法和我們的輕量級容器整合,今天晚上可怎麼辦?難道要把我們的重量級容器讓給它用?鬱悶。
運氣不錯,經過我們長時間的白盒測試,終於發現問題所在。原來是我和老婆為了避免新的功能模組產生記憶體泄露,所以在輕量級容器中多加了一層報紙,結果這導致阿甘極度不滿,不停的拋出異常,而我們的調試能力又極為有限,聽不懂調試資訊,導致浪費了許多時間。看來多層結構不見得好啊,現場解決問題後,終於沒有出現異常了,阿甘乖乖的把小腦袋擱在小爪子上睡著了,兩隻大耳朵軟軟的攤開,小爪子時不時的抽動一下,嘴角還有點口水流出來--------這個介面設計得太漂亮了。我和老婆傻傻的蹲在它的窩邊,看著它小肚皮一起一伏,足足有一個小時。
我親愛的小阿甘,你什麼時候才能長大,跟著我們跑來跑去?