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

          代碼習慣

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

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

          主站蜘蛛池模板: 马关县| 龙口市| 历史| 沅江市| 进贤县| 视频| 巢湖市| 九台市| 武鸣县| 峨边| 缙云县| 延津县| 甘南县| 电白县| 安化县| 红安县| 海门市| 侯马市| 黔西县| 泌阳县| 永年县| 巩留县| 南阳市| 壶关县| 什邡市| 凌云县| 锦州市| 娱乐| 滕州市| 伽师县| 登封市| 花莲县| 尤溪县| 珠海市| 永善县| 墨脱县| 乌兰县| 饶河县| 梨树县| 和政县| 大理市|