<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ### Consolidate Conditional Expression(合并條件式) 你有一系列條件測試,都得到相同結果。 將這些測試合并為一個條件式,并將這個條件式提煉成為一個獨立函數。 ~~~ double disabilityAmount() { if (_seniority < 2) return 0; if (_monthsDisabled > 12) return 0; if (_isPartTime) return 0; // compute the disability amount ~~~ => ~~~ double disabilityAmount() { if (isNotEligableForDisability()) return 0; // compute the disability amount ~~~ **動機(Motivation)** 有時你會發現這樣一串條件檢查:檢查條件各不相同,最終行為卻一致。如果發現這種情況,就應該使用logical-AND 和logical-OR 將它們合并為一個條件式。 之所以要合并條件代碼,有兩個重要原因。首先,合并后的條件代碼會告訴你「實際上只有一次條件檢查,只不過有數個并列條件需要檢查而已」,從而使這一次檢查的用意更清晰。當然,合并前和合并后的代碼有著相同的效果,但原先代碼傳達出的信息卻是「這里有一些獨立條件測試,它們只是恰好同時發生」。其次,這項重構往往可以為你使用 Extract Method 做好準備。「將檢查條件提煉成一個獨立函數」對于厘清代碼意義非常有用,因為它把描述「做什么」的語句換成了「為什么這樣做」。 條件語句的「合并理由」也同時指出了「不要合并」的理由。如果你認為這些檢查的確彼此獨立,的確不應該被視為同一次檢查,那么就不要使用本項重構。因為在 這種情況下,你的代碼己經清楚表達出自己的意義。 **作法(Mechanics)** - 確定這些條件語句都沒有副作用(連帶影響)。 - 如果條件式有副作用,你就不能使用本項重構。 - 使用適當的邏輯操作符(logical operators),將一系列相關條件式合并為一個。 - 編譯,測試。 - 對合并后的條件式實施Extract Method 。 **范例:Ors** 請看下列代碼: ~~~ double disabilityAmount() { if (_seniority < 2) return 0; if (_monthsDisabled > 12) return 0; if (_isPartTime) return 0; // compute the disability amount ... ~~~ 在這段代碼中,我們看到一連串的條件檢查,它們都做同一件事。對于這樣的代碼, 上述條件檢查等價于一個以"logical-OR"連接起來的語句: ~~~ double disabilityAmount() { if ((_seniority < 2) || (_monthsDisabled > 12) || (_isPartTime)) return 0; // compute the disability amount ... ~~~ 現在,我可以觀察這個新的條件式,并運用Extract Method 將它提煉成一個獨立函數,以函數名稱表達該語句所檢查的條件: ~~~ double disabilityAmount() { if (isNotEligibleForDisability()) return 0; // compute the disability amount ... } boolean isNotEligibleForDisability() { return ((_seniority < 2) || (_monthsDisabled > 12) || (_isPartTime)); } ~~~ **范例:Ands** 上述實例展示了"logical-OR"的用法。下列代碼展示"logical-AND"的用法: ~~~ if (onVacation()) if (lengthOfService() > 10) return 1; return 0.5; ~~~ 這段代碼可以變成: ~~~ if (onVacation() && lengthOfService() > 10) return 1; else return 0.5; ~~~ 你可能還會發現,某些情況下需要同時使用logical-AND、logical-OR 和 logical-NOT,最終得到的條件式可能很復雜,所以我會先使用Extract Method 將表達式的一部分提煉出來,從而使整個表達式變得簡單一些。 如果我所觀察的部分,只是對條件進行檢查并返回一個值,我可以使用三元操作符將這一部分變成一條return 語句。因此,下列代碼: ~~~ if (onVacation() && lengthOfService() > 10) return 1; else return 0.5; ~~~ 就變成了: ~~~ return (onVacation() && lengthOfService() > 10) ? 1 : 0.5; ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看