日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

重新组织函数--《重构》阅读笔记

發布時間:2024/4/14 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 重新组织函数--《重构》阅读笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

總結

以上是生活随笔為你收集整理的重新组织函数--《重构》阅读笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。