大連自動泊車軟件開發(fā)維護(hù)人員的工作就是為了解決問題,其中也包括了“歷史遺留問題”。是否要展開重構(gòu),取決于是否有好的解決方案。什么是好的解決方案,以及誰可以帶來好的解決方案,我們在前面的章節(jié)中已經(jīng)多次談到。
我們說,要解決問題,就必須尋找一個有著成功記錄的主刀醫(yī)生,要允許這個主刀醫(yī)生聽取團(tuán)隊意見并獨立地制定方案。如果有好的解決方案,還有什么理由不盡快實現(xiàn)它呢?
我希望承擔(dān)著經(jīng)營風(fēng)險的人去聆聽一些正確的聲音。實際上,大多數(shù)工作在一線的大連自動泊車軟件開發(fā)維護(hù)人員都會感覺到“歷史遺留問題”所帶來的高昂成本!他們在糟糕的程序結(jié)構(gòu)下工作,重復(fù)實現(xiàn)著各種妥協(xié)的方案,不斷添加更多的“歷史遺留問題”。簡單的問題被無限地復(fù)雜化,各種錯誤層出不窮。
如果真的決定重構(gòu),那么應(yīng)該在故事講清楚后再開始重構(gòu)。
這是我對于大連保險公司早會管理軟件最根本的思路。這個思路非常有效,勝過一切工具、會議以及投入的資源。
有人也許會說,現(xiàn)實沒有這么理想。你看,沒有代碼注釋,沒有詳細(xì)設(shè)計文檔,沒有當(dāng)初的作者,怎么來閱讀并理解現(xiàn)有的軟件系統(tǒng)?說得沒錯,理解這樣的軟件系統(tǒng)是困難的。但是,不嘗試去理解是徹頭徹尾的錯誤。
有一個辦法(準(zhǔn)確地說,有一種工作的方式),可以幫助你加快對現(xiàn)有軟件系統(tǒng)的理解速度,那就是講故事。
致遠(yuǎn)服軟認(rèn)為:http://www.soft8.com.cn/從現(xiàn)有軟件系統(tǒng)中提煉故事是一個反向工程。我感到奇怪的是,很少見到有系統(tǒng)地論述這類反向工程的論著。很多軟件維護(hù)人員都在本能地做著這件事情,即便這件事情每天都在發(fā)生。
經(jīng)驗告訴我,看似復(fù)雜的代碼(幾百行甚至上千行)講述的故事情節(jié)其實都很簡單。復(fù)雜的故事不是這么講述的。
復(fù)雜的故事往往由大量短小精煉的類以一種復(fù)雜的關(guān)系組合而成。這些類和關(guān)系來自聯(lián)想豐富的隱喻。大多數(shù)臃腫的代碼塊在擠去水分后,往往只剩下干癟的一小坨。
要對現(xiàn)有的大連自動泊車軟件開發(fā)維護(hù)系統(tǒng)進(jìn)行重構(gòu),你需要一些業(yè)務(wù)分析人員的幫助,另外,把故事記錄下來,整理清楚——僅此而已。
場景故事點評:
在本章的場景故事中,基本上沒有碰到非技術(shù)性妥協(xié)帶來的問題。這歸功于孔如之的簡單化思想??兹缰?jīng)有過動搖,例如,讓于倫負(fù)責(zé)TFC項目的架構(gòu)設(shè)計;如果是這樣,結(jié)果將完全不同。