重構(gòu)的感悟

由于最近換了新工作,新公司的代碼在結(jié)構(gòu)和規(guī)范上都不是很好,于是希望后續(xù)通過重構(gòu)來優(yōu)化代碼。

但是重構(gòu)的標(biāo)準(zhǔn)是什么?什么才叫好的代碼呢,如果單憑經(jīng)驗(yàn),容易陷入個(gè)人喜好主義,那和之前的代碼有何區(qū)別呢?也許別人看你重構(gòu)的代碼也和你現(xiàn)在看別人代碼一樣呢,這樣不就變成一個(gè)死循環(huán)了嗎。

因此,在重構(gòu)前,我覺得有必要閱讀相關(guān)資料,尋找理論依據(jù)去支撐我的行動(dòng)。業(yè)界評(píng)價(jià)度頗高的一本叫《重構(gòu)》的經(jīng)典著作里面的觀點(diǎn),應(yīng)該是大家達(dá)成共識(shí)最好途徑。

下面摘錄了部分閱讀中感觸比較深的段落。

《重構(gòu)—改善既有代碼的設(shè)計(jì)》

何時(shí)重構(gòu)

最近跟同事經(jīng)常的對(duì)話是:
我:小明,你知道那塊代碼是什么意思嗎,代碼有點(diǎn)混亂,我沒法弄懂。
小明:那塊代碼很復(fù)雜的,現(xiàn)在已經(jīng)能跑,你就別動(dòng)它了。
下面是書上提到何時(shí)應(yīng)該重構(gòu),看下面的場(chǎng)景,是不是和我目前的狀況非常相似呢。

你的態(tài)度也許傾向于盡量少修改程序:不管怎么說,它還運(yùn)行得很好。你心里牢牢記住那句古老的工程諺語(yǔ):“如果它沒壞,就不要?jiǎng)铀??!边@個(gè)程序業(yè)務(wù)還沒壞掉,但它造成了傷害。它讓你的生活比較難過,因?yàn)槟惆l(fā)現(xiàn)很難完成客戶所需的修改。這時(shí)候,重構(gòu)技術(shù)就該粉墨登場(chǎng)了。

怎么跟經(jīng)理講重構(gòu)

最近跟產(chǎn)品經(jīng)理討論,我們需要抽取時(shí)間進(jìn)行代碼重構(gòu),產(chǎn)品經(jīng)理的觀點(diǎn)是以完成工作為優(yōu)先,重構(gòu)工作其實(shí)沒那么重要。但是我是不同意他的觀點(diǎn)的,今天剛好讀到了這一個(gè)話題,給我提供了一個(gè)完整的理論基礎(chǔ)。

很多經(jīng)理嘴巴上說自己“質(zhì)量驅(qū)動(dòng)”,其實(shí)更多是“進(jìn)度驅(qū)動(dòng)”。這種情況下我會(huì)給他們一個(gè)較有爭(zhēng)議的建議:不要告訴經(jīng)理!

軟件開發(fā)者都是專業(yè)認(rèn)識(shí),我們的工作就是盡可能快速創(chuàng)造出高效軟件。對(duì)于創(chuàng)造軟件,重構(gòu)可帶來巨大幫助,如果需要添加新功能,而原本設(shè)計(jì)卻又使我無法方便地修改,先重構(gòu)再添加新功能會(huì)更快些。受進(jìn)度驅(qū)動(dòng)的經(jīng)理要我盡可能快速完事,至于怎么完成,那就是我的事了。

關(guān)于技術(shù)債務(wù)

我以前理解的技術(shù)債務(wù)只是有不良的代碼,需要抽時(shí)間進(jìn)行償還。書上說,債務(wù)是會(huì)產(chǎn)生利息的,確實(shí)是這樣,不良的代碼就像債務(wù),會(huì)產(chǎn)生利息,時(shí)間越長(zhǎng),利息越高,最后將會(huì)無法償還,直到破產(chǎn)。

“技術(shù)債務(wù)”:把未完成的重構(gòu)形容為“債務(wù)”,很多公司都需要借債來使自己更有效的運(yùn)轉(zhuǎn),但是借債就得付利息,過于復(fù)雜的代碼所造成的維護(hù)和擴(kuò)展的額外成本就是利息。你可以承受一定程度的利息,但如果利息太高你就會(huì)被壓垮。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 經(jīng)濟(jì)機(jī)器是怎樣運(yùn)行的 經(jīng)濟(jì)就像一部簡(jiǎn)單的機(jī)器那樣運(yùn)行,但很多人不懂,或是對(duì)經(jīng)濟(jì)的運(yùn)行持有不同的觀點(diǎn),于是導(dǎo)致了很多...
    JJH如影隨形閱讀 561評(píng)論 0 1
  • 重構(gòu)經(jīng)過了十幾年的發(fā)展和應(yīng)用,可以說它是極限編程中程序員最愛的實(shí)踐之一了,紛紛爭(zhēng)相在項(xiàng)目里應(yīng)用。重構(gòu)工作坊、Cod...
    禚嫻靜閱讀 630評(píng)論 1 9
  • 關(guān)注武志紅老師的公眾號(hào)一段時(shí)間了,覺得里面的文章不錯(cuò),剛好看到武老師的這本《巨嬰國(guó)》,用一周的時(shí)間粗略瀏覽完...
    午夜的向日葵閱讀 540評(píng)論 0 0
  • 話說大家伙如果參加一個(gè)聚會(huì)或者讀書會(huì)等活動(dòng),會(huì)不會(huì)有尷尬的場(chǎng)面,那么多的人在一起,要求討論看法,你卻閉口不談或者內(nèi)...
    faye26閱讀 313評(píng)論 1 3
  • 從 Android 7.0 開始,系統(tǒng)將阻止應(yīng)用動(dòng)態(tài)鏈接非公開 NDK 庫(kù),這種庫(kù)可能會(huì)導(dǎo)致您的應(yīng)用崩潰。此行為變...
    NiceDream閱讀 2,582評(píng)論 0 2

友情鏈接更多精彩內(nèi)容