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

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

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

    ivaneeo's blog

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

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
    范例(Examples)
    下面范例中我要計(jì)算一個(gè)蘇格蘭布?。╤aggis)運(yùn)動(dòng)的距離。在起點(diǎn)處,靜止的蘇格蘭布丁會(huì)受到一個(gè)初始力的作用而開始運(yùn)動(dòng)。一段時(shí)機(jī)后,第二個(gè)力作用于布丁,讓它再次加速。根據(jù)牛頓第二定律,我可以這樣計(jì)算布丁運(yùn)動(dòng)的距離:

    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變量有兩個(gè)責(zé)任:第一是保存第一個(gè)力造成的初始加速度;第二是保存兩個(gè)力共同造成的加速度。這就是我想要剖解的東西。

    首先,我在函數(shù)開始處修改這個(gè)臨時(shí)變量的名稱,并將新的臨時(shí)變量聲明為final。接下來我把第二次賦值之前對(duì)acc變量的所有引用點(diǎn),全部改用新的臨時(shí)變量。最后,我在第二次賦值處重新聲明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;
    }

    新的臨時(shí)變量的名稱指出,它只承擔(dān)原先acc變量的第一責(zé)任。我將它聲明為final,確保它只被賦值一次。然后,我在原先acc變量第二次被賦值處重新聲明acc。現(xiàn)在,重新編譯并測試,一切都應(yīng)該沒有問題。

    然后,我繼續(xù)處理acc臨時(shí)變量的第二次賦值。這次我把原先的臨時(shí)變量完全刪掉,代之以一個(gè)新的臨時(shí)變量。新變量的名稱指出,它只承擔(dān)原先acc變量的第二個(gè)責(zé)任:

    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 閱讀(187) 評(píng)論(0)  編輯  收藏 所屬分類: refactoring-從地獄中重生
    主站蜘蛛池模板: 久久久久久成人毛片免费看| 成年免费a级毛片| 成全在线观看免费观看大全| 亚洲综合区小说区激情区| 国产精品亚洲va在线观看| 国产免费av片在线播放| 最好2018中文免费视频| 亚洲国产成人爱av在线播放| 一区二区三区免费在线视频 | 国产一卡二卡四卡免费| 亚洲成人免费在线观看| 青娱乐免费在线视频| 亚洲欧美日韩综合久久久久| 国产在线观看www鲁啊鲁免费| 黄网站在线播放视频免费观看| 亚洲狠狠爱综合影院婷婷| 国产日韩久久免费影院| 亚洲电影国产一区| 免费福利网站在线观看| 青草久久精品亚洲综合专区| 亚洲国产精品狼友中文久久久| 99在线热播精品免费99热| 亚洲国产精品热久久| 成年人网站免费视频| 免费播放美女一级毛片| 亚洲理论电影在线观看| 亚洲黄色免费网址| 亚洲av无码专区在线观看亚| 在线亚洲97se亚洲综合在线| 免费无码中文字幕A级毛片| 亚洲色成人四虎在线观看| 亚洲区小说区图片区| 精品免费久久久久久久| 亚洲日韩在线中文字幕综合| 久久久久久a亚洲欧洲aⅴ| 色se01短视频永久免费| 美女视频黄a视频全免费网站色| 国产V亚洲V天堂A无码| 日本一区二区三区免费高清| 无遮挡呻吟娇喘视频免费播放| 久久久久久亚洲AV无码专区|