一.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




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


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           

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

          Copyright © 在從未放棄的路上

          主站蜘蛛池模板: 华阴市| 肥城市| 安平县| 龙游县| 南涧| 那曲县| 无锡市| 临桂县| 芷江| 武川县| 原阳县| 柳林县| 溧阳市| 林口县| 长岭县| 建德市| 页游| 宜兰市| 望谟县| 峨眉山市| 富顺县| 贞丰县| 辽源市| 合作市| 全州县| 阜平县| 雷波县| 宁安市| 南雄市| 陵水| 株洲市| 甘孜| 明溪县| 澄城县| 汽车| 冷水江市| 鄂尔多斯市| 洮南市| 灵石县| 兴化市| 绥芬河市|