一.Extract method
          當一個函數過長的時候,提煉出一些小的函數。主要有三種情況:
          1.沒有臨時變量時,直接提取。
          2.有臨時變量,但臨時變量的值在被提煉函數中不作改變,將temporary parameter傳入extract method直接使用。
          3.有臨時變量,并且臨時變量的值會多次被改變,在被提取的函數中將臨時變量改變的值返回。

          二.Inline method
          將一段代碼或拆分的函數重新inline到一個大函數中,除去不必要的間接調用。
          Inline Temp,將只被賦值一次的臨時變量替換為表達式本身,因為它可能妨礙了其它的重構。
          三.Replace Temp With Query,將表達式提煉為函數,temp variable被賦值多次的情況,考慮使用split temporary variable.

          四.Introduce Explaining Variable,將復雜表達式或者它的一部分的結果放到臨時變量中,以變量名來解釋表達式用途。在條件邏輯中通常具有使用意義。但它通常在extract method難以進行時才使用,因為它只能針對特定函數。

          五.Split Temporary Variable,某個臨時變量使用超過一次,將它拆分為多個臨時變量。

          六.Remove Assignments to Parameters,代碼對參數進行賦值,用臨時變量替代參數在代碼中的位置。這樣的代碼讓人迷糊,在JAVA中所有參數都是pass by value,不存在pass by refrence.
          個人的理解,我認為當傳遞的參數是對象,java是copy了這個對象參數,它和傳遞的參數指向一個地址,當你對這個對象再賦值時,是將這個copy的對象參數重新指向了一個新的地址,而無法影響傳進來的參數本身,但是你可以通過操作這個對象來修改它所指向的地址中的值。學過C,有指針概念的人我想應該不難理解。

          七.Replace Method With Method Object,將函數放到對象中,局部變量變成值域。

          八.Substitute Algorithm




          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          posts - 9, comments - 0, trackbacks - 0, articles - 3

          Copyright © 在從未放棄的路上

          主站蜘蛛池模板: 淮阳县| 阿拉尔市| 通化市| 德昌县| 平凉市| 襄樊市| 东乡| 新绛县| 建水县| 大姚县| 清流县| 汕头市| 栾川县| 炉霍县| 富顺县| 大竹县| 原阳县| 德兴市| 木兰县| 车险| 金昌市| 宜昌市| 交城县| 和静县| 镇雄县| 长兴县| 若羌县| 汨罗市| 琼中| 上饶县| 弥渡县| 克什克腾旗| 同心县| 珲春市| 威信县| 乌鲁木齐县| 湖口县| 潍坊市| 南陵县| 资溪县| 鸡西市|