6,duplicate observed data (複製 「被監視資料」)
現象:你有一些領域資料置身於gui控制項中,而領域函式需要訪問這些資料
要點:將該資料複製到乙個領域物件中。建立乙個observer模式,用以同步領域物件和gui物件內的重複資料。
7,change unidirectional association to bidirectional (將單向關聯改為雙向關聯)
現象:兩個類都需要使用對方特性,但其間只有一條單向連線
要點:新增乙個反向指標,並使修改函式能夠同時更新兩條連線。
8,change bidirectional association to unidirectional (將雙向關聯改為單向關聯)
現象:兩個類之間是雙向關聯,但其中乙個類今不再需要另乙個類的特性
要點:去除不必要的關聯。
9,replace magic number with symbolic constant (以字面常量取代魔法數)
現象:你有乙個字面數值,帶有特別含義
要點:創造乙個常量,根據其意義為它命名,並將上述的字面數值替換為這個常量
10,encapsulate field (封裝字段)
現象:你的類中存在乙個public欄位
要點:將它封裝為private,並提供相應的訪問函式。
重新組織資料
將乙個值用於多個用途,就是催生混亂與bug的溫床 1.拆分變數 如果乙個變數有多個用途,就為每個用途宣告乙個變數。還有,如果要對引數改值,也先複製乙份,對副本改值,返回副本。2.字段改名 給字段取乙個準確的名字。好的命名及資料分布,能讓別人只看類的字段就理解這些類的行為。3.以查詢取代派生變數 盡量...
重新組織資料(一)
1,self encapsulate field 自封裝自段 現象 你直接訪問乙個字段,但與字段直接的耦合關係逐漸變得笨拙 要點 為這個字段建立取值 設定函式,並且只以這些函式來訪問字段。2,replace data value with object 以物件取代資料值 現象 你有乙個資料項,需要與...
重新組織資料(三)
11,encapsulate collection 封裝集合 現象 有個函式返回乙個集合 要點 讓這個函式返回該集合的乙個唯讀副本,並在這個類中提供新增 移除集合元素的函式。12,replace record with data class 以資料類取代記錄 現象 你需要面對傳統程式設計環境中的記錄...