重構(gòu),改善既有代碼的設(shè)計 第二章(1)

          @關(guān)于間接層的概念。

          間接層就是我們所提煉出來的小函數(shù)。本來事情是可以交給一個大函數(shù)一次性去執(zhí)行完的,可是我們?yōu)槭裁催€要把他分割成小函數(shù),再委托小函數(shù)這個間接層去完成事情呢。以下是作者總結(jié)出來的三點間接層的好處。

          1、 允許邏輯共享。也就是說小函數(shù)做的這些小事情,子類也同樣可以做,而且跟其他事情互不干擾。

          2、間接層給了我們一個解釋自己意圖的機會。間接層允許我們選擇最適合表達我們意圖的名字來命名,那在調(diào)用這些函數(shù)的時候,我一看他們的名字就知道他們可能會做些什么事情。就像Justin昨天寫的那個 A()

                                      {

                                               …

                                               ….

                                               ….   200 

          }

          改成

          A()

          {

                   A1();

                   A2();

                   A3();

          }

          A1()

          {

                   …….

          }

          A2(){….}

          A3(){….}

          這樣你在整理邏輯的時候,頭腦會很清醒。(因為名字是我們賦予他們的意義)

          3、將變化加以隔離,當(dāng)我需要修改一些邏輯的時候,我可以把我在整個項目中掀起的波瀾降低很多。

          @在有些開源的框架內(nèi),我的接口名字已經(jīng)公布了,可是現(xiàn)在我在重構(gòu)的時候需要改變這些接口名字,改怎么辦呢?

          這時候可以保留舊的接口,然后在舊的接口中用新接口來實現(xiàn)邏輯。一直持續(xù)到所有用戶都開始使用新接口的時候,再把這個舊接口去掉。

          @這個世界不存在一條萬能的定律能解決一切問題(我曾經(jīng)想象要是有這么一條定律就好了,這也是很多哲學(xué)家,科學(xué)家所追求過的),所以不要試圖用重構(gòu)來拯救整個世界。有以下幾種情況重構(gòu)不適用。

          當(dāng)代碼已經(jīng)腐朽到連正常功能都不能運行的時候,也許重寫(從頭再來一遍)比重構(gòu)要來的簡單。

          有的時候臨近發(fā)布,我們要趕眼前的時間,就不應(yīng)重構(gòu)了。重構(gòu)其實是一劑中藥,雖然藥效很好,但是效果卻也來的慢一些。如果是趕時間發(fā)布,那就不要寄希望于重構(gòu)了。重構(gòu)是我們欠的債,很多時候我們都是舉債來發(fā)布的,但是債都是有利息的,“過于復(fù)雜的代碼所造成的【維護和擴展的額外開銷】就是利息。一定的利息我們可以承受,但是利息過高就會被拖垮。“出來混總是要還的”。最近幾次發(fā)布都通宵,這也許就是我們的重構(gòu)債欠的有點過多的信號。是時候來償還一些債了。


          posted on 2010-02-04 11:36 鍵盤動物 閱讀(259) 評論(1)  編輯  收藏

          評論

          # re: 重構(gòu),改善既有代碼的設(shè)計 第二章(1)[未登錄] 2010-02-04 14:18 呵呵

          不錯  回復(fù)  更多評論   


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          <2010年2月>
          31123456
          78910111213
          14151617181920
          21222324252627
          28123456
          78910111213

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿

          隨筆檔案

          新聞分類

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 柳河县| 永丰县| 鲁山县| 宜兰县| 本溪| 长沙市| 依安县| 宁河县| 全椒县| 娱乐| 炉霍县| 渝中区| 新化县| 册亨县| 安西县| 嵊泗县| 苏尼特左旗| 鄂州市| 周至县| 双流县| 威海市| 无锡市| 盱眙县| 息烽县| 封丘县| 榆社县| 丹江口市| 邹平县| 蛟河市| 都兰县| 筠连县| 英山县| 百色市| 同江市| 白朗县| 扶余县| 宁安市| 三门县| 伊金霍洛旗| 大余县| 苍南县|