<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之旅 廣告
                “我去!怎么回事兒?明明改過的,怎么連Log都沒有呢?” 周權一邊大喊一邊跑步往來于調試機和自己的開發機之間。 大家笑著說:“加油!跑跑更健康!” 第三遍后,終于找到了root cause,原來是自己把程序傳錯了,他一直測沒有被修改的程序呢,當然看不到新加的log。 大家哈哈大笑,感覺又年輕了幾歲。 人不比機器,有七情六欲會影響著你的行為,沒有機器那種按部就班執行指令的簡單。從這一點上看,人類是復雜的。 越是復雜的事物,越是容易出錯。人類的行為也不例外,尤其當我們的狀態下降時,更是如此。在某些行業比如醫生要保證在手術中不出錯,不出偏差,真的很難。他們的那種壓力我們IT癡漢也深有體會。那些關乎生命的程序,真的容不得半點差錯。還好,現在我們的工作并么有那么嚴苛。有時出了低級錯誤,就好像是出了一個笑話一樣,講給大家聽聽,給大家減減壓。 **致命的低級錯誤** 這是我心中永遠的痛啊。大家在項目開始時就進入了趕進度的狀態,代碼review不多,通常都是自己忙自己的。 后期,我們的程序會不定期的Crash,C++程序對Crash還是比較難抓的。就這樣我們不斷的調試,也改了我們認為是野指針的問題。Crash出現的不多了,大家也有時間互相review下代碼了。就在給我review的時候,江濤發現了數組越界的問題。就那我之前寫的wlan代碼為例子吧。大家也看看。 **[cpp]**?[view plain](http://blog.csdn.net/lincyang/article/details/39102117# "view plain")[copy](http://blog.csdn.net/lincyang/article/details/39102117# "copy")[![](https://box.kancloud.cn/2015-10-13_561c56d3593bb.png)](https://code.csdn.net/snippets/465057 "在CODE上查看代碼片")[![](https://box.kancloud.cn/2015-10-13_561c56d363c1b.svg)](https://code.csdn.net/snippets/465057/fork "派生到我的代碼片") ~~~ 1. for?(int?i?=?0;?i?int)?pIfList->dwNumberOfItems;?i++)?{?? 2. ????pIfInfo?=?(WLAN_INTERFACE_INFO?*)?&pIfList->InterfaceInfo[i];?? 3. ????wprintf(L"??Interface?Index[%u]:\t?%lu\n",?i,?i);?? 4. ????iRet?=?StringFromGUID2(pIfInfo->InterfaceGuid,?(LPOLESTR)?&GuidString,??? 5. ????????????????????sizeof(GuidString)/sizeof(*GuidString));??? 6. ????...?? 7. ????if(my?judge)?break;?? 8. }?? ~~~ 就用它舉例吧,我覺得這很典型。在循環體中,我有一個判斷,如何符合條件,就跳出循環。就是這么簡單的一個遍歷網卡的例子。大家看出來問題沒? 對,就是多循環一次。 很明顯,int i=0;i<=dwNumberOfItems; 不是我的本意。我真的 是順手就把“=”號打出來的。而問題為啥不容易發現,是因為我的條件(my judge)通常會在頭幾次循環中符合,程序就會跳出循環。但某一情況,循環全部進行完就會出現數組越界的問題。 我說這是筆誤,你們信嗎? **自己忽悠自己** 這個例子類似與周權的問題。我在寫代碼時,喜歡加注釋。不得不說,這是一個好習慣。當數月之后,再回頭來看比較有特殊背景的代碼,會比較容易與當時的自己溝通。 當時的代碼類似于下面的: **[cpp]**?[view plain](http://blog.csdn.net/lincyang/article/details/39102117# "view plain")[copy](http://blog.csdn.net/lincyang/article/details/39102117# "copy")[![](https://box.kancloud.cn/2015-10-13_561c56d3593bb.png)](https://code.csdn.net/snippets/465057 "在CODE上查看代碼片")[![](https://box.kancloud.cn/2015-10-13_561c56d363c1b.svg)](https://code.csdn.net/snippets/465057/fork "派生到我的代碼片") ~~~ 1. //try?10?times?do?my?job.?magic?number?you?know.?? 2. for?(int?i?=?0;?i? 3. ...?? 4. }?? ~~~ 而有些時候,10次貌似次數還不夠,需要變成15次更好。但大部分時候,10次已經足夠。下面我就進行下修改, 然后跑到測試機上測它個10次。 **[cpp]**?[view plain](http://blog.csdn.net/lincyang/article/details/39102117# "view plain")[copy](http://blog.csdn.net/lincyang/article/details/39102117# "copy")[![](https://box.kancloud.cn/2015-10-13_561c56d3593bb.png)](https://code.csdn.net/snippets/465057 "在CODE上查看代碼片")[![](https://box.kancloud.cn/2015-10-13_561c56d363c1b.svg)](https://code.csdn.net/snippets/465057/fork "派生到我的代碼片") ~~~ 1. //try?15?times?do?my?job.?magic?number?you?know.?? 2. for?(int?i?=?0;?i? 3. ...?? 4. }?? ~~~ 結果很令我滿意,但提交代碼時我一看,天啊,我只是修改了注釋。 瞬間感覺自己跟自己玩的挺開心啊。 **跟For循環較上勁了** 這一次是齊天的故事,還是for循環,循環次數貌似要經歷一次神奇的運算。 **[cpp]**?[view plain](http://blog.csdn.net/lincyang/article/details/39102117# "view plain")[copy](http://blog.csdn.net/lincyang/article/details/39102117# "copy")[![](https://box.kancloud.cn/2015-10-13_561c56d3593bb.png)](https://code.csdn.net/snippets/465057 "在CODE上查看代碼片")[![](https://box.kancloud.cn/2015-10-13_561c56d363c1b.svg)](https://code.csdn.net/snippets/465057/fork "派生到我的代碼片") ~~~ 1. int?count?=?%&&**((%$#$%^&*(*&^^&*;?? 2. for?(int?i?=?0;?i? 3. ...?? 4. }?? ~~~ 這段代碼我認為沒有問題。循環3次,對于我不清楚邏輯的情況下,不覺得有問題。但是,周權知道邏輯,對齊天說,你把循環次數計算完就不管了?然后就只循環三次? 原來是醬紫啊! **[cpp]**?[view plain](http://blog.csdn.net/lincyang/article/details/39102117# "view plain")[copy](http://blog.csdn.net/lincyang/article/details/39102117# "copy")[![](https://box.kancloud.cn/2015-10-13_561c56d3593bb.png)](https://code.csdn.net/snippets/465057 "在CODE上查看代碼片")[![](https://box.kancloud.cn/2015-10-13_561c56d363c1b.svg)](https://code.csdn.net/snippets/465057/fork "派生到我的代碼片") ~~~ 1. int?count?=?%&&**((%$#$%^&*(*&^^&*;?? 2. for?(int?i?=?0;?i? 3. ...?? 4. }?? ~~~ 寫程序是個細致活,馬虎不得。但往往我們也會出現這種啼笑皆非的低級錯誤,是我們的責任不假,但跟當時的瘋狂趕進度和瘋狂加班都有關系。 并不是加班就會出成果,一個好的心情,好的工作、團隊氛圍更容易出成績。
                  <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>

                              哎呀哎呀视频在线观看