重構 程式猿的藝術

2021-10-02 00:06:36 字數 1514 閱讀 8414

重構:在不改變軟體對外表現和行為的前提下修改已有**使其易於理解,便於擴充套件

重構就是讓**易於程式猿理解。在重構的世界裡**是寫給程式猿看的而非寫給機器看,我們會忽視效能而專注於讓**對程式猿更友好(先讓**跑通,再去重構,最後才考慮效能優化)

重複一遍:

重構時機

好處新增功能前

更易擴充套件

改bug前

更易找出bug

評審**時

加深理解

看圖:

測試框架是判斷重構成功與否的關鍵,再重複一遍:

重構:在不改變軟體對外表現和行為的前提下修改已有**使其易於理解,便於擴充套件

重構不能改變**對外的表現和行為,測試框架正是要測試重構是否改變了**的對外介面,如果不能通過測試,必須對重構進行修復(回滾到重構之前)

**壞味(bad smell),出自《重構——改善既有**的設計》的作者,作者認為**的不合理設計就像嬰兒的尿布散發出來的bad smell一樣,當你聞到它的時候,就應該警惕:該給**換尿布了

我們要重構**,首先要找出需要重構的地方,作者總結了幾種特殊「味道」的bad smell,我把它寫在了【怎麼重構】的下面(**壞味)

使用針對**壞味的重構手段對其進行重構即可

使用第一步建立的測試框架對重構進行測試

重構可不是寫bug

我只收錄了《重構——改善既有**的設計》中一部分常見的**壞味,更多的請檢視原書

壞味

表現對應的重構手段

重複**塊

相同**重複出現

抽取方法

方法過長

方法體長度超過30行

抽取方法

方法引數過多

方法所需的引數超過3個

使用物件封裝引數集

臨時變數存在

**中有臨時變數

使用查詢方法取代臨時變數

switch語句存在

**中有switch分支

使用多型取代switch分支

類過長類的長度超過100行

轉移成員變數和函式

抽取類發散式變化

引發乙個類修改的原因不只乙個

抽取類發散式修改

乙個類修改,引發修改的其他類不止乙個

抽取類資料依賴&過度親密

乙個類過多呼叫另乙個類的成員和函式(甚至超過了擁有成員和函式的類)

轉移成員變數和函式

本文由部落格一文多發平台 openwrite 發布!

大道化簡,重構的藝術

這個題目貌似很大,有成為標題黨人的嫌疑。其實我想說的是一些小事,就是我小時候經常去小渠裡抓魚。而抓魚的方式也很簡單,就是拿磚塊,泥巴把小渠的兩頭堵起來,然後把中間的水舀出去。軟體為什麼要重構?那是因為你感覺不夠好。之所以感覺不夠好,原因可能會很多。我想,最嚴重的乙個可能就是設計混亂。設計混亂牽扯的方...

《瘋狂的程式猿》 什麼是真正的程式猿?

什麼是真正的程式猿?瘋狂的程式猿 書裡說的 1.真正的程式猿是,值得尊敬的。程式猿的雙手是魔術師的雙手。他們把枯燥無味的 變成了豐富多彩的軟體。2.真正的程式猿是。當你房子,車子,妹子都有了,你還在coding 那你是真的程式猿 3.真正的程式猿是,當編碼能給你帶來無窮的激情的時候 4.真正的程式猿...

程式猿的情懷

一千年的時光,我無數次掀起歲月的帷幔,只為和你,在某乙個平靜如水的日子相遇,然後相識,而後相知,傾情一生,繾綣一世 那一月,那一年,那一世 六世 倉央嘉錯 那一夜,我聽了一宿梵唱,不為參悟,只為尋你的一絲氣息。那一月,我轉動所有經綸,不為超度,只為觸控你的指紋。那一年,我磕長頭擁抱塵埃,不為朝佛,只...