重新组织函数--《重构》阅读笔记
1)尋找引用點時,最好使用工具,然后再人工review。在看到這個問題的時候,我估計應該是很久之前了。現在用IDE。這個要方便很多。
2)重新組織函數的方法和目標。
其實目標很簡單。就是消滅長函數。
? 常用方法
? Extract method
? Inline Method
? Replace Temp with Query
? Temporary Variable
? Replace Method with Method Object
? Remove Assignments to Parameters
? Substitude Algorithm
3)Extract Method
?? 1.這個方法看起來很簡單。實際上也是很簡單的。我覺得這里的技巧,或者說難度,還是在于對業務邏輯能夠合理的拆分。
?? 2.看到這么一句話,如果說函數足夠小。那么高層函數其實起來像是注釋。
????? 這個讓我想起了以前和同事就Extract method這個問題討論。反對派的觀點主要是集中在復用度上面。覺得有些方法,即使抽出來,很難復用。但是這句話,很好的反駁了他們。Extract method可以是讓以“注釋”的方式,讓代碼更加可讀。
4)Remove Assignment to Parameters.
?? 1.這個方法還是挺簡單的。就是把局部方法壓入Extract Method。唯一比較麻煩的是返回值需要有多個值的時候,可以用Replace Temp with Query 和 Replace method with Method Object來解決。
5)Inline Method
?? 1.書中提到了兩個原因要用到這種重構方式。
??? 第一種,函數太簡單,個人覺得用處不大。因為函數一個很重要的目的是封裝變化。這么做就和這個目的背道而馳了。
??? 第二種,就是為了重新重構做準備。需要回復到比較原始的狀態。就好像倚天屠龍記中,俞三俠要用黑玉斷續膏重新接骨,要把老傷打斷,一個道理。
6)Inline Temp
?? Inline Temp多半是作為Replace Temp with Query的一部分來使用的。
?? 我覺得這個重構手法單獨的用處不大。或者說只有極度喜歡減少代碼行數的人喜歡使用。我不是其中的一員。我不覺得代碼行數越少,就代碼可讀性就越高。但是現實中,你總是會碰到一些人會問。可以寫成一行的,為什么要寫成兩行?
??? 我比較贊同書中的說法,除非影響到以后其他的重構方法,否則還是不要做得好。
7)Replace Temp with Query(以查詢取代臨時變量)
??? 1.用方法來減少臨時變量,變量變成返回值。
??? 2.Splite Temporary Variable
?????? Separate Query From Modifier
??? 3.只被復制一次的臨時變量。超過一次用Splite Temporary Variable
??? 4.第一次看到這個名字的時候,我還是比較排斥,或者說不喜歡這種重構方式的。因為覺得這個增加運算的次數。很多時候。用個變量存儲方法返回值,是減少運算次數。但是看了例子之后,發現其實他的核心是解決局部變量阻擋Extract Method。就好像是依賴注入一樣。當一個值是被“注入話,移動它也就方便很多了。
8) Introduce Explaining Variable(引入解釋性變量)
將復雜表達式(或其中一部分)的結果放進一個臨時變量,以變量名稱來解釋表達式的用途。
覺得這個方法和Extract Method區別不是很大。
9)split Temporary Variable(分解臨時變量)
你的程序有某個臨時變量被賦值超過一次,它既不是循環變量,也不被用于收集計算結果。那么針對每次賦值,創造一個獨立,對應的臨時變量。
1,看了那么多,覺得核心思想是對臨時變量進行控制,除了一些列外(循環變量和結果收集變量),盡量越少越好,即使有,也是一次賦值。
2.? 這個其實是一個中間方法,主要還是減少局部變量在重構時的障礙。
10)Remove Assignments to parameters(移除對參數的賦值)
? 就算沒有重構的原因,這個也是不該發生的。
11)Replace Method with Method Project(以函數對象取代函數)
??? 將這個函數放進一個單獨的對象中,如此一來,局部變量就成了對象內的字段。然后你可以再同一個對象,將這個大型的函數分解為多個小型函數。
??? 1)在看了這個例子中,其實還是覺得有點復雜,但是怎么說呢,意思到了。把其中一些復雜的邏輯封裝在一個“容器”中。
12)Subsitute Algorithm(替換算法)
將函數替代另一種算法。
這個其實還是很簡單的。不過這個不能算是重構的“技巧”了吧。
轉載于:https://www.cnblogs.com/chandlersong/p/3768732.html
總結
以上是生活随笔為你收集整理的重新组织函数--《重构》阅读笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我理解的Hanlder--android
- 下一篇: 3D数学读书笔记——3D中的方位与角位移