一.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 © 在從未放棄的路上

          主站蜘蛛池模板: 秦皇岛市| 阜南县| 顺平县| 招远市| 昆山市| 通许县| 彰化市| 黔西| 安平县| 贞丰县| 中卫市| 区。| 凉山| 达孜县| 泾川县| 泸西县| 肇庆市| 漳州市| 宁蒗| 潮安县| 黄山市| 伊宁县| 中宁县| 张家港市| 盘锦市| 汕尾市| 庄浪县| 界首市| 茶陵县| 山阴县| 新宁县| 剑川县| 东山县| 富顺县| 迭部县| 横山县| 柏乡县| 苏州市| 柳河县| 汾西县| 澄城县|