淺談用敏捷方法進行軟件重用
Brandon Olivares發(fā)起了討論。他說,他剛剛在某些代碼上用了30小時的時間,然后覺得這些代碼可能會被重用,于是就覺得很矛盾,不知道是不是該把這些代碼抽象出來,這樣其他項目就有可能也用得到。
按照我個人理解來看,XP不鼓勵假想某些東西可能會被用到,除非確實到了要用那個東西的時間點上。還是我的個人理解,剛才所說的東西也包括提取代碼以供日后重用,XP提倡的是到了出現(xiàn)重復的時候再去做重構(gòu)。
軟件重用長期以來一直被極力宣揚為可以大量節(jié)省時間,也許另一個項目中的人可以重用你的代碼,而不用重新開發(fā)。Brandon想知道其他人都是怎么決定在什么時候抽象代碼加以泛化的。
Ron Jeffries***個回復,他講了為什么跨團隊重用的做法比初看起來要困難且昂貴得多:
我必須得給它打包,要是就我自己用的話這活就不用干了;我得給它寫文檔;我得讓它更加抗造,把周邊的一些問題去掉;我得給它提供支持,回答很多問題;我得訓練別人用它。
如果我做了這些事情,代價就很高;如果我不做,別人用我的東西就很困難,給他們帶不來多少幫助。
因為這些原因,Ron采取的是這種做法:
我只做適當?shù)某橄螅瑝蜃约河镁秃谩H绻乙院笤谝粋€稍微不同的環(huán)境下還需要用的話,我就會改進抽象。不過除非我的項目目標是給其他項目構(gòu)建成品,我就不會浪費時間和金錢去給其他項目做東西。
還有一位認為,如果所有的項目都共享一套通用構(gòu)建系統(tǒng)和測試套件,那重用就會容易一些。在這樣的環(huán)境中,如果某個團隊打算重用某些可以泛化的代碼,這個構(gòu)建系統(tǒng)就可以保證他們不會給其他需要這些代碼的團隊造成障礙。
George Dinwiddie、Ralph E. Johnson等人推薦到第二次(乃至更晚)用到同樣代碼的時候再做泛化。Adam Sroka把這個叫做“演化重用”,他認為這種方法比“為重用而設計”效率更高。一名叫做Tim的人發(fā)帖說,他這樣給業(yè)務人員解釋:“***次,你是給編碼買單;第二次,你是給重用買單;第三次,它就是免費的了。”
George指出,更困難的地方在于怎么讓其他團隊意識到有些代碼可以重用。幫助大家發(fā)現(xiàn)良機的溝通成本可能會很高。Jeff Langr說,讓開發(fā)人員跨團隊結(jié)對,可以解決這個問題。
Scott Ambler也加入了交流,他提到,開源也是重用的一種形式,它已經(jīng)取得了巨大成功。他同時也提到,代碼庫、開發(fā)工具包乃至mash-up這些都是軟件重用的成功案例。
【編輯推薦】