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-從地獄中重生
          主站蜘蛛池模板: 涪陵区| 垣曲县| 郧西县| 桓台县| 牡丹江市| 阿坝| 萨迦县| 米易县| 婺源县| 佛冈县| 西宁市| 石首市| 红安县| 游戏| 临城县| 邵武市| 那坡县| 商南县| 普格县| 宜君县| 旺苍县| 蒙阴县| 长春市| 广河县| 华坪县| 济阳县| 天气| 广丰县| 银川市| 镇江市| 固原市| 郧西县| 吴堡县| 铁力市| 百色市| 大连市| 无锡市| 鸡东县| 梁山县| 巴马| 渝北区|