ivaneeo's blog

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

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
          如果有很多函數已經使用了_interestRate field,我應該先運用Self Encapsulate Field(171):
          class Account...
              private AccountType _type;
              private double _interestRate;
              double interestForAmount_days(double amount, int days) {
                 return getInterestRate() * amount * days / 365;
              }
              private void setInterestRate(double arg) {

                 _interestRate = arg;
              }
              private double getInterestRate() {
                 return _interestRate;
              }

          這樣,在搬移field之后,我就只需要修改訪問函數就行了:

              double interestForAmount_days(double amount, int days) {
                 return getInterestRate() * amount * days / 365;
              }
              private void setInterestRate(double arg) {

                 _type.setInterestRate(arg);
              }
              private double getInterestRate() {
                 return _type.getInterestRate();
              }

          如果以后有必要,我可以修改訪問函數(accessors)的用戶,讓它們使用新對象。Self Encapsulate Field(171)使我得以保持小步前進。如果我需要對class做許多處理,保持小步前進是有幫助的。特別值得一提的是:首先使用
          Self Encapsulate Field(171)使我得以更輕松使用Move Method(142)將函數搬移到target class中。如果待移函數引用了field的訪問函數(accessors),那么那些引用點是無須修改的。

          posted on 2005-08-30 14:59 ivaneeo 閱讀(131) 評論(0)  編輯  收藏 所屬分類: refactoring-從地獄中重生
          主站蜘蛛池模板: 仪征市| 团风县| 卓资县| 黄大仙区| 汪清县| 桂东县| 佛坪县| 铁力市| 灌阳县| 芒康县| 淳安县| 江都市| 石门县| 边坝县| 海口市| 海南省| 乐至县| 萨嘎县| 龙陵县| 云阳县| 监利县| 临江市| 南宫市| 赫章县| 哈尔滨市| 信阳市| 都昌县| 平利县| 临高县| 临漳县| 六安市| 聂荣县| 绥中县| 武隆县| 措美县| 左权县| 元阳县| 石嘴山市| 崇文区| 宁阳县| 峡江县|