2007年12月22日 星期六

I06 設計常見問題(4)──用重構來解決問題

“重構是解決程式裡所嗅出的壞氣味”。我是不大明白理想的重構應該針對什麼樣的範圍做什麼樣的事,但是“現在隨便寫寫能動就好,反正未來還會再重構的“,卻是不少系統設計者拿來作為沒有花時間做良好設計的理由。

在我的理念裡系統是一層一層靜態物件搭配動態方法所組合起來的。從最底部的硬體架構搭上溝通橋樑、在上頭佈署元件結構再搭配定義介面、再向上有程式類別與方法呼叫,甚至連傳送的資料也有層次的不同;每個層次又有不同的參數、反應與控制動作。整個系統就像是用積木堆疊起來的巨大模型。

重構如果能侷限在局部不影響其他任何模組應該是最理想的結果,但是我所看過的重構卻是動不動就產生一個新的類別與介面,或是更改物件繼承與實作的關係。架構與物件間層次的變動會影響構築在其上的所有程式,物件繼承特性的改變也會影響內部的行為與使用的時機;這樣的改變將會造成許多與之相關的程式變得非常不穩定。

如需上述的重構應該在上頭還沒有程式構築其上時儘速進行,等到系統都快完成了才發現要變動架構或物件特性,就像民眾都把房子蓋在某片土地上後政府才說那土地是要蓋公園的,或者是像結婚典禮快開始了才發現配偶的性別不是原來我們所想的。有些改變太晚發生時,造成的影響實在是太深遠了。

沒有留言:

張貼留言