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

          主站蜘蛛池模板: 仙居县| 广饶县| 西青区| 三穗县| 长垣县| 景德镇市| 绥滨县| 维西| 西青区| 深泽县| 浑源县| 天台县| 和顺县| 焉耆| 宜阳县| 宁明县| 东安县| 株洲县| 常宁市| 新巴尔虎右旗| 班戈县| 商城县| 绍兴县| 咸阳市| 诸城市| 板桥市| 怀集县| 二连浩特市| 定南县| 毕节市| 台东县| 辉县市| 定西市| 彰武县| 新野县| 安乡县| 美姑县| 宣威市| 蓬溪县| 临桂县| 雷山县|