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

          代碼習慣

          Posted on 2005-11-17 11:55 canonical 閱讀(428) 評論(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();
                 }

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

          主站蜘蛛池模板: 徐闻县| 灵宝市| 宜城市| 尖扎县| 确山县| 新晃| 石狮市| 灵山县| 扶风县| 徐水县| 洪江市| 富蕴县| 门源| 娱乐| 类乌齐县| 宁波市| 茌平县| 东至县| 泰兴市| 台湾省| 剑川县| 蒙山县| 黄山市| 白水县| 乐昌市| 双辽市| 曲靖市| 鄂托克旗| 隆子县| 柳江县| 铁岭市| 子长县| 同江市| 罗山县| 阜新| 勃利县| 柘城县| 通许县| 绥宁县| 辉南县| 清苑县|