ivaneeo's blog

          自由的力量,自由的生活。

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
          動機(Motivation)
          臨時變量的問題在于:它們是暫時的,而且只能在所屬函數內使用.由于臨時變量只有在所屬函數內才可見,所以它們會驅使你寫出更長的函數,因為只有這樣你才能訪問到想要訪問的臨時變量.如果把臨時變量替換為一個查詢式(query method),那么同一個class中的所有函數都將可以獲得這份信息.這將帶給你極大幫助,使你能夠為這個class編寫更清晰的代碼.

          Replace Temp with Query(120)往往是你運用Extract Method(110)之前必不可少的一個步驟.局部變量會使代碼難以被提煉,所以你應該盡可能把它們替換為查詢式.

          這個重構手法較為直率的情況就是:臨時變量只被賦值一次,或者賦值給臨時變量的表達式不受其他條件影響.其他情況比較棘手,但也有可能發生.你可能需要先運用Split Temporary Variable(128)或Separate Query from Modifier(279)使情況變得簡單一些,然后再替換臨時變量.如果你想替換的臨時變量是用來收集結果的(例如循環中的累加值),你就需要將某些程序邏輯(例如循環)拷貝到查詢式(query method)去.
          posted on 2005-08-25 14:43 ivaneeo 閱讀(268) 評論(0)  編輯  收藏 所屬分類: refactoring-從地獄中重生
          主站蜘蛛池模板: 全州县| 临朐县| 桃园县| 寿光市| 鄂伦春自治旗| 确山县| 比如县| 阿拉善右旗| 潼关县| 双鸭山市| 曲靖市| 沙雅县| 新营市| 轮台县| 翁牛特旗| 句容市| 襄汾县| 东乡族自治县| 游戏| 洪洞县| 大名县| 靖边县| 陇川县| 云和县| 石河子市| 壶关县| 龙川县| 嘉兴市| 平利县| 霍林郭勒市| 嘉峪关市| 芜湖市| 眉山市| 博客| 徐州市| 咸丰县| 永靖县| 宽甸| 瑞安市| 兴国县| 钟山县|