<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ivaneeo's blog

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

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
    范例(Examples)
    下面范例中我要計算一個蘇格蘭布丁(haggis)運動的距離。在起點處,靜止的蘇格蘭布丁會受到一個初始力的作用而開始運動。一段時機后,第二個力作用于布丁,讓它再次加速。根據牛頓第二定律,我可以這樣計算布丁運動的距離:

    double getDistanceTravelled(int time) {
        double result;
        double acc = _primaryForce / _mass;
        int primaryTime = Math.min(time, _delay);
        result = 0.5 * acc * primaryTime * primaryTime;
        int secondaryTime = time - _delay;
        if(secondaryTime > 0) {
           double primaryVel = acc * _delay;
           acc = (_primaryForce + _secondaryForce) / _mass;
           result += primaryvel * secondaryTime + 0.5 * acc * secondaryTime * secondaryTime;
        }
        return result;
    }

    acc變量有兩個責任:第一是保存第一個力造成的初始加速度;第二是保存兩個力共同造成的加速度。這就是我想要剖解的東西。

    首先,我在函數開始處修改這個臨時變量的名稱,并將新的臨時變量聲明為final。接下來我把第二次賦值之前對acc變量的所有引用點,全部改用新的臨時變量。最后,我在第二次賦值處重新聲明acc變量:

    double getDistanceTravelled(int time) {
        double result;
        final double primaryAcc = _primaryForce / _mass;
        int primaryTime = Math.min(time, _delay);
        result = 0.5 * primaryAcc * primaryTime * primaryTime;
        int secondaryTime = time - _delay;
        if(secondaryTime > 0) {
           double primaryVel = primaryAcc * _delay;
           double acc = (_primaryForce + _secondaryForce) / _mass;
           result += primaryvel * secondaryTime + 0.5 * acc * secondaryTime * secondaryTime;
        }
        return result;
    }

    新的臨時變量的名稱指出,它只承擔原先acc變量的第一責任。我將它聲明為final,確保它只被賦值一次。然后,我在原先acc變量第二次被賦值處重新聲明acc?,F在,重新編譯并測試,一切都應該沒有問題。

    然后,我繼續處理acc臨時變量的第二次賦值。這次我把原先的臨時變量完全刪掉,代之以一個新的臨時變量。新變量的名稱指出,它只承擔原先acc變量的第二個責任:

    double getDistanceTravelled(int time) {
        double result;
        final double primaryAcc = _primaryForce / _mass;
        int primaryTime = Math.min(time, _delay);
        result = 0.5 * primaryAcc * primaryTime * primaryTime;
        int secondaryTime = time - _delay;
        if(secondaryTime > 0) {
           double primaryVel = primaryAcc * _delay;
           final double secondaryAcc = (_primaryForce + _secondaryForce) / _mass;
           result += primaryvel * secondaryTime + 0.5 * secondaryAcc * secondaryTime * secondaryTime;
        }
        return result;
    }
    posted on 2005-08-29 14:56 ivaneeo 閱讀(184) 評論(0)  編輯  收藏 所屬分類: refactoring-從地獄中重生
    主站蜘蛛池模板: 亚洲精品一级无码鲁丝片| 午夜影院免费观看| 日本免费电影一区| 亚洲日本人成中文字幕| 国产一卡二卡3卡四卡免费| 亚洲一区在线免费观看| 久久精品a一国产成人免费网站| 久久精品国产亚洲AV高清热| 99久久免费观看| 亚洲人成日本在线观看| 国产一精品一AV一免费孕妇| 亚洲真人无码永久在线观看| 国产精品成人无码免费| 美女露隐私全部免费直播| 亚洲女人被黑人巨大进入| 中文字幕成人免费高清在线 | 亚洲无砖砖区免费| 美女裸身网站免费看免费网站| 国产日本亚洲一区二区三区| 噜噜嘿在线视频免费观看| 色噜噜狠狠色综合免费视频| 亚洲视频在线免费| 免费无码一区二区三区| 亚洲丰满熟女一区二区v| 在线观看人成网站深夜免费| 免费人人潮人人爽一区二区 | 亚洲美女人黄网成人女| 成人黄页网站免费观看大全| 国产偷国产偷亚洲高清人| 亚洲精品无码乱码成人| ww在线观视频免费观看| 羞羞视频在线免费观看| 亚洲成人中文字幕| 免费观看的a级毛片的网站| 无遮挡呻吟娇喘视频免费播放| 久久久久亚洲AV成人无码网站| 亚洲中文无码永久免费| 一级做a爱过程免费视| 亚洲精品偷拍无码不卡av| 日本免费网站观看| 99在线在线视频免费视频观看|