ivaneeo's blog

          自由的力量,自由的生活。

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
          有時你會看到這樣的對象:其內某個instance變量僅為某種特定情勢而設。這樣的代碼讓人不易理解,因為你通常認為對象在所有時候都需要它的所有變量。在變量未被使用的情況下猜測當初其設置目的,會讓你發瘋。

          請使用Extract Class(149)給這個可憐的孤兒創造一個家,然后把所有和這個變量相關的代碼都放進這個新家。也許你還可以使用Introduce Null Object(260)在[變量不合法]的情況下創建一個null對象,從而避免寫出[條件式代碼]。

          如果class中有一個復雜算法,需要好幾個變量,往往就可能導致壞味道Temporary Field的出現。由于實現者不希望傳遞一長串參數(想想為什么),所以他把這些參數都放進值域(fields)中。但是這些值域只在使用該算法時才有效,其他情況下只會讓人迷惑。這時候你可以利用Extract Class(149)把這些變量和其相關函數提煉到一個獨立class中。提煉后的新對象將時一個method object[Beck](譯注:其存在只是為了提供調用函數的途徑,class本身并無抽象意味)。
          posted on 2005-08-19 15:24 ivaneeo 閱讀(413) 評論(0)  編輯  收藏 所屬分類: refactoring-從地獄中重生
          主站蜘蛛池模板: 建阳市| 苏尼特右旗| 班戈县| 广宗县| 桃园县| 漳州市| 连南| 瑞金市| 搜索| 阿鲁科尔沁旗| 永登县| 吉隆县| 尖扎县| 石家庄市| 桦甸市| 如皋市| 辛集市| 扎兰屯市| 那坡县| 大安市| 华坪县| 铅山县| 安新县| 公安县| 宝坻区| 高州市| 鹿泉市| 临武县| 大姚县| 鄂托克前旗| 百色市| 太谷县| 开封县| 沾益县| 荃湾区| 平湖市| 嘉祥县| 舞钢市| 宣恩县| 奉新县| 郧西县|