——關(guān)于重構(gòu)方式的設(shè)想
我們重構(gòu)部分代碼時,往往想到的是穩(wěn)定,最好是不變接口,只變實現(xiàn),保持接口的穩(wěn)定性。但現(xiàn)實往往沒有這么輕松,接口不變,意味著有著一個良好的結(jié)構(gòu)設(shè)計,至少在功能職責(zé)劃分上沒有大的問題。而我們卻時常遭遇這種職責(zé)的混亂,這種Martin Fowler不愿詳談的事情,對我們來說很麻煩。我們不能橫切式的改變,這將導(dǎo)致大規(guī)模的變化,特別是對于層次靠下的部分,范圍的擴大,無論是從控制能力上,還是工作量上,包括對系統(tǒng)穩(wěn)定性的影響方面都是巨大的,兼容舊組件也許并不亞于推倒重來。
“剝”也許是個好辦法,另辟蹊徑繞開原來的設(shè)計,從底向上建立一條新的結(jié)構(gòu)通路,將舊的部分一片一片的剝開,合并到新的部分中來,直到完成重構(gòu)。就像做一個心臟搭橋手術(shù)。