<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 176, comments - 240, trackbacks - 0, articles - 7

    代碼習慣

    Posted on 2005-11-17 11:55 canonical 閱讀(427) 評論(0)  編輯  收藏 所屬分類: 軟件開發
        新手總是有很多不好的代碼習慣. 最常見的一個是不使用臨時變量.例如
        for(int i=0;i<myList.size();i++){
            otherList.get(i).getSomeVar().getName();
            otherList.get(i).getSomeVar().getValue();
        }
        這種做法有如下后果:
        1. 代碼冗長, 容易出錯, 例如循環體中的某個i寫成了j
        2. 函數調用終究是要耗費時間的, 在一個循環體中的調用往往對性能有可見的影響. 特別是當函數動態裝載數據的時候, 例如每次調用該函數都查詢數據庫, 這種不使用臨時變量的方法將會為系統留下性能隱患.
        3. 一條很長的語句如果不是為流式調用而設計的, 則這種調用方式會影響到我們的調試工作. 例如 當某個中間步驟返回空指針時, 程序會拋出NullPointerException異常, 而我們得到的信息只是某一行存在空指針異常, 但是無法定位到具體是哪個步驟. 當某個中間步驟返回的值不是null但也不是我們所期望的值的時候, 我們同樣難以診斷出具體出錯的步驟. 使用臨時變量將會為調試提供便利
          int i,n=myList.size();
          for(i=0;i<n;i++){
              MyVar var = otherList.get(i);
              var.getName();
              var.getValue();
              ...
          }
          在需要的時候我們可以在出錯語句處加上斷點, 或者直接輸出可疑的變量值.
        4. 長語句不利于抽象出子函數. 例如在第二種方式中我們抽象出子函數的難度比第一種方式小
           void processVar(MyVar var){
               var.getName();
               var.getValue();
           }

        造成這些習慣的原因很耐人尋味, 我猜想缺乏抽象能力似乎是最基本的原因, 畢竟為變量起一個名字也是最簡單的抽象步驟之一.

    主站蜘蛛池模板: 亚洲中文字幕无码久久综合网 | 国产免费MV大全视频网站| 猫咪社区免费资源在线观看 | 香蕉97碰碰视频免费| 日本免费v片一二三区| 亚洲欧美日韩中文二区| 成在人线AV无码免费| 亚洲成av人无码亚洲成av人| 成人免费一区二区无码视频| 亚洲人成网站18禁止| 日本特黄特色aa大片免费| 国产成人+综合亚洲+天堂| 免费真实播放国产乱子伦| 四虎影视在线看免费观看 | 偷自拍亚洲视频在线观看99| 国产美女无遮挡免费网站| 美女被爆羞羞网站免费| 色久悠悠婷婷综合在线亚洲| 毛片免费在线观看| 精品亚洲aⅴ在线观看| 亚洲免费福利在线视频| 亚洲经典千人经典日产| 免费一级毛片免费播放| 中文字幕无码免费久久9一区9| 亚洲AV无一区二区三区久久| 1000部羞羞禁止免费观看视频| 亚洲欧美国产国产综合一区| 四虎免费永久在线播放| 成人性生交大片免费看好| 亚洲国产福利精品一区二区| 免费a级毛片视频| 免费在线观影网站| 亚洲最大的黄色网| 亚洲国产成人久久精品99 | 麻豆精品成人免费国产片| 亚洲天堂免费在线| 亚洲日韩精品无码一区二区三区 | 特级毛片aaaa免费观看| 亚洲欧洲日产国产综合网| 日韩免费高清一级毛片在线| 国内永久免费crm系统z在线|