ivaneeo's blog

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

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks

          范例(Examples):有局部變量(Using Local Variables)

          是的,就在局部變量,包括傳進源函數的參數和源函數所聲明的臨時變量。局部變量的作用域僅限于源函數,所以當我使用Extract Method(110)時,必須花費額外工夫去處理這些變量.某些時候它們甚至可能妨礙我,使我根本無法進行這項重構.

          局部變量最簡單的情況是:被提煉碼只是讀取這些變量的值,并不修改它們.這種情況下我可以簡單地將它們當作參數傳給目標函數.所以如果我面對下列函數:
          void printOwing() {
              Enumeration e = _orders.elements();
              double outstanding = 0.0;

              printBanner();

              // calculate outstanding
              while(e.hasMoreElements()) {
                 Order each = (Order) e.nextElement();
                 outstanding += each.getAmount();
              }

              //print details
             
          System.out.println("name:" + _name);
             
          System.out.println("amount" + outstanding);
          }

          我就可以將[打印詳細信息]這一部分提煉為[帶一個參數的函數]:

          void printOwing() {
              Enumeration e = _orders.elements();
              double outstanding = 0.0;

              printBanner();


              // calculate outstanding
              while(e.hasMoreElements()) {
                 Order each = (Order) e.nextElement();
                 outstanding += each.getAmount();
              }
             printDetails(outstanding);
          }

          void printDetails(double outstanding) {
              System.out.println("name:" + _name);
             
          System.out.println("amount" + outstanding);
          }

          必要的話,你可以用這種手法處理多個局部變量.

          posted on 2005-08-24 15:13 ivaneeo 閱讀(223) 評論(0)  編輯  收藏 所屬分類: refactoring-從地獄中重生
          主站蜘蛛池模板: 兴隆县| 莱芜市| 内乡县| 老河口市| 定日县| 峨边| 沾益县| 壤塘县| 枣强县| 鄂尔多斯市| 昌平区| 龙岩市| 工布江达县| 宜君县| 年辖:市辖区| 保定市| 石城县| 大田县| 安图县| 洪洞县| 呼图壁县| 城固县| 松滋市| 克什克腾旗| 榆林市| 新干县| 泾阳县| 公安县| 平利县| 邹城市| 车险| 焦作市| 隆尧县| 射阳县| 贺州市| 乌恰县| 平乡县| 香河县| 屏边| 时尚| 乌拉特后旗|