11,encapsulate collection (封裝集合)
現象:有個函式返回乙個集合
要點:讓這個函式返回該集合的乙個唯讀副本,並在這個類中提供新增/移除集合元素的函式。
12,replace record with data class (以資料類取代記錄)
現象:你需要面對傳統程式設計環境中的記錄結果
要點:為該記錄建立乙個「啞」資料物件。
13,replace type code with class (以類取代型別碼)
現象:類之中有乙個數值型別碼,但它並不影響類的行為
要點:以乙個新的類替換該數值型別碼。
14,replace type code with subclasses (以子類取代型別碼)
現象:你有乙個不可變的型別碼,它會影響類的行為
要點:以子類取代這個型別碼。
15,replace type code with state/strategy (以 state/strategy 取代型別碼)
現象:你有乙個型別碼,它會影響類的行為,但你無法通過 繼承手法消除它。
要點:以狀態物件取代型別碼。
16,replace subclass with fields (以欄位取代子類)
現象:你的各個子類的唯一差別只在「返回常量資料」的函式身上
要點:修改這些函式,使它們返回超類中的某個新增字段,然後銷毀子類。
重新組織資料
將乙個值用於多個用途,就是催生混亂與bug的溫床 1.拆分變數 如果乙個變數有多個用途,就為每個用途宣告乙個變數。還有,如果要對引數改值,也先複製乙份,對副本改值,返回副本。2.字段改名 給字段取乙個準確的名字。好的命名及資料分布,能讓別人只看類的字段就理解這些類的行為。3.以查詢取代派生變數 盡量...
重新組織資料(一)
1,self encapsulate field 自封裝自段 現象 你直接訪問乙個字段,但與字段直接的耦合關係逐漸變得笨拙 要點 為這個字段建立取值 設定函式,並且只以這些函式來訪問字段。2,replace data value with object 以物件取代資料值 現象 你有乙個資料項,需要與...
重新組織資料(二)
6,duplicate observed data 複製 被監視資料 現象 你有一些領域資料置身於gui控制項中,而領域函式需要訪問這些資料 要點 將該資料複製到乙個領域物件中。建立乙個observer模式,用以同步領域物件和gui物件內的重複資料。7,change unidirectional a...