大多數(shù)編程環(huán)境都有兩種數(shù)據(jù):結(jié)構(gòu)型別(record types)允許你將數(shù)據(jù)組織成有意義的形式;基本型別(primitive
types)則是構(gòu)成結(jié)構(gòu)型別的積木塊。結(jié)構(gòu)總是會(huì)帶來(lái)一定的額外開(kāi)銷(xiāo)。它們有點(diǎn)像數(shù)據(jù)庫(kù)中的表格,或是那些得不償失(只為做一兩件事而創(chuàng)建,卻付出太大
額外開(kāi)銷(xiāo))的東西。
對(duì)象技術(shù)的新手通常不原意在小任務(wù)上運(yùn)用小對(duì)象-像是結(jié)合數(shù)值和幣別的money class、含一個(gè)起始值和一個(gè)結(jié)束值的range class、電話(huà)號(hào)碼或郵政編碼(zip)等等的特殊Strings。你可以運(yùn)用Replace Data Value with Object(175)將原本單獨(dú)存在的數(shù)據(jù)值替換為對(duì)象,從而走出傳統(tǒng)的洞窟,進(jìn)入炙手可熱的對(duì)象世界。如果欲替換之?dāng)?shù)據(jù)值是type code(型別碼),而它并不影響行為,你可以運(yùn)用Replace Type Code with Class(218)將它換掉。如果你有相依于此type code的條件式,可運(yùn)用Replace Type Code with Subclass(227)或Replace Type Code with State/Strategy(227)加以處理。
如果你有一組應(yīng)該總是被放在一起的值域(fields),可運(yùn)用Extract Class(149)。如果你在參數(shù)列中看到基本型數(shù)據(jù),不妨試試Introduce Parameter Object(295)。如果你發(fā)現(xiàn)自己正從array中挑選數(shù)據(jù),可運(yùn)用Replace Array with Object(186)。