標題: 架構(gòu)師的必殺技——代碼重寫 [打印本頁]

作者: 51黑電子論壇    時間: 2015-12-19 19:17
標題: 架構(gòu)師的必殺技——代碼重寫

作為軟件開發(fā)者的你,一定聽說過重構(gòu)一詞,在我們平時的開發(fā)生活中,為了使代碼更加易于理解和處理一些代碼編寫過程中沒有注意到的問題,我們會相當頻繁的對我們的代碼進行重構(gòu)處理。不過今天我在這里不是想講該如何重構(gòu),或者我們?yōu)槭裁匆鲋貥?gòu),如果你的確有這方面的需求你可以查看《重構(gòu):改善既有代碼的設計》這本書。

今天我想講的是重寫,這是我作為一名入門級架構(gòu)師屢試不爽的必殺技,在這里分享給你。

其實從思想和技法上來說,重寫應該可以歸類為重構(gòu),但有一點不同的,就是重構(gòu)需要熟悉遺留代碼,而重寫不需要熟悉遺留代碼。

代碼是有生命力的,他會隨著時間的推移,逐漸的老去,失去活力。

寫出一段好的代碼,他的生命力將會很長(何謂好的代碼,其實有很多討論,例如應用SOLID原則編寫代碼,這個就不在這里討論了),但無論如何,他始終是有生命周期的,終將有老去和失去活力的一天,當那一天到來,我們應該決定推翻重做還是任由其自生自滅?

而且在團隊合作中,本來可能以你個人的素養(yǎng),你可以做到代碼永世長青,但是你無法避免你的團隊成員破壞你代碼的生命力,當然有一個很好的實踐——只有代碼庫的Owner才能簽入代碼,任何由其他人完成的代碼都需要由Owner親自審核后,親自簽入,故他可以在簽入前,保證這段代碼的素質(zhì)是符合自己的,但這對Owner的要求高,且若需要在短時間內(nèi)開發(fā)大型工程就會有極大的局限,Github上的代碼幾乎都是用這種方式管理的,甚至像Linux這類源代碼也是用這種模式進行管理的。

若非上面那種實踐,設想你處于一個水平參差不齊的團隊,每個人負責一個模塊的開發(fā),系統(tǒng)上線進入維護階段后,某人離職后發(fā)現(xiàn)其設計的模塊復雜且不易理解,有極大的難度讓后續(xù)人員去理解并進行修改,這個時候再來考慮重寫?

我知道你的疑問,一定會覺得這樣是不是成本更高,風險更加不易控制,若你是在這件事情已經(jīng)發(fā)生后才開始考慮重寫這件事情,那不用想了,一定是成本很高,且風險極大,這種時候的確不建議輕易下結(jié)論重寫。

于是,我之所以寫這篇文章便是希望你能在發(fā)生這件事情之前就做好準備。

我們首先來分析一下,一般都會有些什么情況會導致重寫是必須發(fā)生的。

一般有些什么原因會導致需要重寫

注解:所謂打補丁的方式,是指你在發(fā)現(xiàn)未被框架預先考慮到的異常情況出現(xiàn)后,通過判斷特定情況給予特殊處理的方式讓程序得以正常的方式。這種處理方式的潛在危害就是你不知道還會有多少個這種特殊情況存在。

我們是不是應該在這個時間到來之前,提前做一點什么準備呢?

我們應為重寫提前做好什么準備
末了,我還是得再強調(diào)一下,我的觀點不是要讓大家去經(jīng)常重寫代碼,而是希望能夠讓大家認識到,一定會有不得不重寫代碼的可能性,尤其是在水平參差不齊的團隊中,所以提前為這種可能性做好準備,絕對比臨時抱佛腳強上很多倍。






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1