你需要的(de)不是重構,而是理(lǐ)清業務邏輯

發布時(shí)間:2013-04-12 浏覽: 來(lái)源:安群網絡科技有限公司

最近我遇到了(le)一位以前公司的(de)同事。他(tā)提到了(le)數年前我在那個(gè)公司曾經開發過的(de)項目。他(tā)說這(zhè)個(gè)項目現在已經變成了(le)“職業殺手”。基本上,任何接觸過這(zhè)個(gè) “職業殺手”項目的(de)人(rén)最終都會離開這(zhè)個(gè)公司。如果公司想讓名下(xià)的(de)程序員(yuán)人(rén)數>0,唯一的(de)辦法就是花數月(yuè)時(shí)間完全重構這(zhè)個(gè)系統。

對(duì)于這(zhè)事我有兩點要說。首先,在我離開這(zhè)個(gè)公司前,這(zhè)個(gè)系統的(de)單元測試覆蓋率已經達到了(le)85%,所以,不要責備我。第二,這(zhè)麽大(dà)規模的(de)重構?肯定會出問題。

每 一個(gè)系統裏都至少有一個(gè)成爲人(rén)民公敵、讓所有人(rén)害怕的(de)組件。它承載了(le)太多(duō)的(de)任務,它擁有太多(duō)狀态,太多(duō)的(de)其它組件調用(yòng)它。當時(shí)間到了(le)償還(hái)技術債務的(de)時(shí)候, 人(rén)人(rén)都會把目光(guāng)投向這(zhè)個(gè)組件。然而,如果你對(duì)這(zhè)個(gè)組件隻有一個(gè)不全面的(de)理(lǐ)解,你放下(xià)所有工作來(lái)完全重構它,那你成功的(de)幾率會很小。這(zhè)個(gè)組件,就就它表現出 來(lái)的(de)令人(rén)恐怖的(de)程度和(hé)複雜(zá)相比,它的(de)實際情況會比你想象更複雜(zá),更恐怖。

你認爲這(zhè)個(gè)組件是如何發展成這(zhè)樣一個(gè)不幸的(de)狀态的(de)?是因爲公司雇用(yòng) 了(le)一個(gè)笨蛋,讓他(tā)肆無忌憚的(de)往系統裏增加複雜(zá)度?或是因爲這(zhè)個(gè)組件最初設計的(de)太抽象,由于多(duō)年來(lái)需求的(de)變更,它的(de)責任範圍不斷的(de)擴大(dà)?(出于個(gè)人(rén)的(de)自尊, 我甯願相信這(zhè)個(gè)“職業殺手”屬于後者)。十有八九,這(zhè)個(gè)組件變成如今這(zhè)個(gè)恐怖的(de)狀态,都有由“聰明(míng)人(rén)”的(de)一些“好意”造成的(de)。如果你決定做(zuò)一次大(dà)的(de)重構, 你實際是欠下(xià)了(le)另一筆技術債務留給後人(rén)。

爲了(le)能真正的(de)徹底償還(hái)這(zhè)筆債務,你需要去分(fēn)解這(zhè)個(gè)系統的(de)複雜(zá)度。你需要花時(shí)間尋找所有調用(yòng)這(zhè)個(gè)組件 的(de)客戶端。你需要花時(shí)間跟你的(de)同事交流,了(le)解這(zhè)個(gè)這(zhè)個(gè)組件的(de)曆史和(hé)它是如何被使用(yòng)的(de)。你需要簡化(huà)這(zhè)個(gè)組件的(de)周邊環境,看看它是如何運作的(de)。每周,你都需要 花更多(duō)的(de)時(shí)間來(lái)更清楚的(de)了(le)解這(zhè)個(gè)組件的(de)業務。隻要有足夠長(cháng)的(de)時(shí)間跨度,你最終能理(lǐ)清所有複雜(zá)的(de)問題。

從實際方法上說,這(zhè)個(gè)問題應該怎麽辦?與其現在花3個(gè)整月(yuè)的(de)時(shí)間做(zuò)一次完全的(de)重構,不如先用(yòng)一個(gè)季度的(de)時(shí)間做(zuò)清理(lǐ)工作。最後還(hái)是要重寫,但有了(le)3個(gè)月(yuè)的(de)計劃準備,你有了(le)時(shí)間去分(fēn)析和(hé)設計。你有了(le)時(shí)間來(lái)理(lǐ)清業務。

在線質詢 售後服務
售前咨詢-謝QQ:458431995 點擊這(zhè)裏給我發消息 售前咨詢-呂QQ: 點擊這(zhè)裏給我發消息 售前咨詢QQ:1589795052 點擊這(zhè)裏給我發消息 售後客服QQ: 點擊這(zhè)裏給我發消息

浏覽排行

安裝Mac OSX Lion 的(de)完整指南(nán) Adobe推出HTML5的(de)富媒體編輯器 Mac OS X可(kě)以不正确撤銷狡猾的(de)數字 DevExpress是觸摸開發工具升級的(de)重 免費的(de)VSS中DiscountASP.NET宣布TF 蘋果船舶IOS 5.0.1電池的(de)修複補丁 Whamcloud想使Lustre更容易使用(yòng) 谷歌(gē)的(de)Adwords如何使用(yòng)關鍵字的(de)搜 對(duì)于在工作中的(de)iPad,第2輪Office

最新資訊

微信并沒有申請第三方支付牌照(zhào) 工信部謝雨(yǔ)琦 數據中心建設布局應 美(měi)國十大(dà)最幸福科技公司 谷歌(gē)第四 毛偉收獲IPv6先鋒獎 整體域名服務 百兆寬帶下(xià) 更好的(de)服務成運營商競 亞馬遜雲計算(suàn)營收可(kě)達10億美(měi)元 谷歌(gē)光(guāng)纖五大(dà)益處:不再承受緩沖之 鵬博士2012年淨利潤2.07億元 同比 聯通(tōng)亦莊IDC試點引入SDN 節點數量
Live Chat by comm100