<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] 在Dart中,可選參數可以是位置參數,也可以是命名參數,但不能同時參考。 ## 避免位置布爾參數。 與其他類型不同,布爾值通常以文字形式使用。像數字這樣的東西通常被包裝在命名的常量中,但是我們通常直接傳遞真和假。如果不清楚布爾值表示什么,就會導致callsites無法讀取: ~~~ 【bad】 new Task(true); new Task(false); new ListBox(false, true, true); new Button(false); ~~~ 相反,考慮使用命名參數、命名構造函數或命名常量來闡明調用的作用。 ~~~ Task.oneShot(); Task.repeating(); ListBox(scroll: true, showScrollbars: true); Button(ButtonState.enabled); ~~~ 注意,這并不適用于setter,在setter中名稱清楚地表示值的含義: ~~~ listBox.canScroll = true; button.isEnabled = false; ~~~ ## 如果用戶可能想要省略早期的參數,則避免可選的位置參數。 可選的位置參數應該具有邏輯級別,使得前面的參數比后面的參數更頻繁地被傳遞。 用戶幾乎不需要顯式傳遞“占位”來省略先前的位置參數以便后邊參數的傳遞。 最好還是使用命名參數。 ~~~ String.fromCharCodes(Iterable<int> charCodes, [int start = 0, int end]); DateTime(int year, [int month = 1, int day = 1, int hour = 0, int minute = 0, int second = 0, int millisecond = 0, int microsecond = 0]); Duration( {int days = 0, int hours = 0, int minutes = 0, int seconds = 0, int milliseconds = 0, int microseconds = 0}); ~~~ ## 避免強制參數接受一個特殊的“無參數”值。 如果用戶在邏輯上漏掉了一個參數,那么寧愿讓他們通過使參數可選而實際上忽略它,而不是強迫他們傳遞null、空字符串或其他表示“未傳遞”的特殊值。 省略參數更簡潔,有助于防止錯誤,當用戶認為標記值(如null)提供了真正的值時,意外地傳遞了該值。 ~~~ var rest = string.substring(start); ~~~ ~~~ 【bad】 var rest = string.substring(start, null); ~~~ ## 請使用包含開始和獨占結束參數來接受范圍。 如果您正在定義一個方法或函數,該方法或函數允許用戶從整數索引序列中選擇元素或項的范圍,那么可以使用start索引,它指的是第一個項和一個(可能是可選的)比最后一個項的索引大一個的結束索引。 這與做同樣事情的核心庫是一致的。 ~~~ [0, 1, 2, 3].sublist(1, 3) // [1, 2] 'abcd'.substring(1, 3) // 'bc' ~~~ 在這里保持一致特別重要,因為這些參數通常是未命名的。如果您的API使用的是長度而不是端點,那么在callsite上根本就看不到差異。
                  <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>

                              哎呀哎呀视频在线观看