《重構》讀書筆記(六)——第六章 重新組織函數

來源:互聯網
上載者:User

1、在很多情況下,我們使用“提煉函數”這個重構手法時會遇到一個困難,即如何給函數起一個好的名稱。所以我們需要在函數名稱上下功夫,多積累經驗。P116 提煉函數

2、函數應該盡量選擇單一傳回值。P116 提煉函數

3、間接性可能帶來協助,但非必要的間接性也總是給人不舒服。P117內聯(即消除)函數

4、預設情況下,我們應該總是將臨時變數定義為final(C++中為const). P124引入解釋性變數

注意:我通常還會在另一種情況下使用這個重構手法,當我需要引用一個 map 或 hastabel 的key或value (特別是通過迭代器)時,為了使代碼更易讀,我會選擇將key或value賦給一個臨時性變數。

5、 “一個實體只能有一個責任”!因此,函數中的變數應該只承擔一個職責。如果一個變數在函數中被賦值了多次,則說明它承擔了不只一個責任。P128分離臨時變數

6、移除對參數的賦值:對輸入參數賦值通常不是一個好做法。當然,對於使用“出參數”的語言(例如C++),我也會盡量少使用出參數。P132移除對參數的賦值

注意:請盡量只以return方式返回一個值。如果需要返回的值不止一個,那麼看看是否可以把需要返回的一大堆資料變成一個對象進行返回,或者乾脆為每個傳回值設計對應的一個獨立函數。

7、以函數對象取代函數(Replace Method With Method Object)幾乎可以拆解任何大型函數。P135以函數對象取代函數

注意:當然, Replace Method With Method Object重構手法產生的新類通常只有一個執行個體(對象),這和《代碼大全》P146頁中“只有一個執行個體的類是值得懷疑的”相悖。暫且,我們將之看作一個特例吧。

8、 隨著對問題的更多瞭解,我們往往會發現,在原先的做法之外,還有更簡單的解決方案。這時我們必須有壯士斷腕的豪氣,刪掉舊演算法,使用新演算法。P139替換演算法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.