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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                【123.1 一種能省去一個lock自鎖變量的按鍵驅動程序。】 一位群友給我提到了一個按鍵的改進建議,能巧妙的省去一個lock自鎖變量。這個建議引起了我對“變量的分工要專一,一個變量盡量只用在一類事物上,盡量不取巧兼容”的思考。 第一種:帶lock自鎖變量,也是我一直在用的代碼。 if(0!=KEY\_INPUT1)//IO是高電平,說明按鍵沒有被按下,這時要及時清零一些標志位 { Su8KeyLock1=0; //按鍵解鎖 Su16KeyCnt1=0; //按鍵去抖動延時計數器清零,此行非常巧妙,是全場的亮點。 } else if(0==Su8KeyLock1)//有按鍵按下,且是第一次被按下。這行如果有疑問,請看92節的專題分析。 { Su16KeyCnt1++; //累加定時中斷次數 if(Su16KeyCnt1>=KEY\_FILTER\_TIME) //濾波的“穩定時間”KEY\_FILTER\_TIME,長度是25ms。 { Su8KeyLock1=1; //按鍵的自鎖,避免一直觸發 vGu8KeySec=1; //觸發1號鍵 } } 、 第二種:省略掉一個lock自鎖變量,群友提出的改進建議。 if(0!=KEY\_INPUT1) { Su16KeyCnt1=0; } else if(Su16KeyCnt1<KEY\_FILTER\_TIME) //巧妙的利用了Su16KeyCnt1等于濾波時間時,只執行一次 { Su16KeyCnt1++; if(KEY\_FILTER\_TIME==Su16KeyCnt1) //巧妙的利用了Su16KeyCnt1等于濾波時間時,只執行一次 { vGu8KeySec=1; } } 分析: 不得不佩服群友的智慧,第二種改進后看起來非常巧妙,猶如蜻蜓點水般輕盈灑脫。但是,為此代碼狂歡片刻后,我又有了新的思考和看法。“計時器Su16KeyCnt1”和“自鎖變量Su8KeyLock1”是兩個不同的事物,是兩個不同的范疇,就應該用兩個不同的變量進行區分。如果逞一時之巧,把兩種不同范疇的事物巧妙合并成一個變量,勢必會導致程序的“易讀性”和“后續維護的可擴展性”大打折扣。“自鎖變量Su8KeyLock1”真的是可有可無嗎?假設,如果“計時器Su16KeyCnt1”的消抖時間KEY\_FILTER\_TIME要求等于0,那么第二種改進后的代碼立刻暴露出了問題,行不通。而第一種代碼,因為有“自鎖變量Su8KeyLock1”的存在,即使消抖時間KEY\_FILTER\_TIME等于0,也不影響代碼功能的完整性,因為第一種代碼的理念是“自鎖與計時器是兩種不同的功能范疇,用兩個不同的變量進行分開隔離,各自管理兩種不同的事物,計時器即使為0也不影響代碼本該有的自鎖功能”。通過此例子,給初學者一個建議,在代碼的“隊形感,易讀性,擴展性,分類清晰”和“巧妙,節省代碼”兩者之間,建議大家優先考慮“隊形感,易讀性,擴展性,分類清晰”,追求一種原則上的“工整,不出奇兵,扎硬寨,打呆仗,步步為營”,這樣陣腳不易亂,能走得更遠,駕馭更多千軍萬馬的代碼。
                  <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>

                              哎呀哎呀视频在线观看