一個值得記住的教訓啊

來源:互聯網
上載者:User

昨天下午實現一段代碼,如果一說的話非常簡單,非常低級的問題,但當時測試好幾次,包括兩個人review了,都沒有發現問題.

結果集成到應用發布的時候出現BUG了,只好復原.好在我們的應用都有預發而機制,沒有影響線上的真實應用.

 

情境是這樣的:

 

switch(x){

    case 1:

    case 2:

    case 3: // nothing

               break;

    case 4:

              dosomething;break;

  

    case 5:

              dosomething;break;

    default:

              dosomething;break;

 

昨天要實現case 3的邏輯,是一個URL編碼.結果改成:

switch(x){

    case 1:

    case 2:

    case 3: // nothing

               urlencode(url);

               break;

    case 4:

              dosomething;break;

  

    case 5:

              dosomething;break;

    default:

              dosomething;break;

 

當時測試的時候唯寫了個URL傳進來,正確輸出了.

沒想到case 1和case 2的情況穿越到 case 3了,結果是case 1和case 2的字串都進入了urlencode的邏輯.

這麼低級有錯誤,說出來誰都明白,或者如果整個代碼是自己一次性寫的,絕對不會犯這種低級錯誤,但在修改別人原有代碼時

卻忘記了在上面加個break來阻止穿越.

 

這樣的代碼如果考慮到以後別人可能修改和維護,其實不如費點事每個case直接加上break;否則別人很容易在增加處理狀態時忘記

上面的穿越.

 

小心啊,小心................................

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.