【馬雲有1500億。中國有13億人 他每人發一億 他還有1487億 這樣他還是中國首富 全中國都是億萬富豪。我要不是數學系的都看不出裡面的道道】
專案中如何重新組織資料???
以下來自《重構》這本書的讀書筆記,歡迎留下寶貴意見。
self encapsulate field(自封裝字段)
你直接訪問乙個字段,但與字段之間的耦合關係逐漸變得笨拙。為這個字段建立取值/設值函式,並且只以這些函式來訪問字段。
爭論:直接取值還是間接取值:作者的觀點是間接取值。
replace data value with object(以物件取代資料值)
你有乙個資料項,需要與其他資料和行為一起使用才有意義。將資料項變成物件。
change value to reference(將值物件改為引用物件)
你從乙個人類衍生出許多彼此相等的例項,希望將它們替換為同乙個物件。將這個值物件變成引用物件。
change reference to value(將引用物件改為值物件)
你有乙個引用物件,很小且不可變,而且不易管理,將它變成乙個值物件。
replace array with object(以物件取代陣列)
你有乙個陣列,其中的元素各自代表不同的東西。以物件替換陣列。對於陣列中的每乙個元素,以乙個欄位來表示。
重構前:
string gifts = new string[3];
gifts[0] = "flower";
gifts[1] = "say love";
gifts[2] = "call";
重構後:
gift gift = new gift();
gift.setflower(999);
gift.setsayword("love you");
gift.setcall("good night");
change unidirectional association to bidirectional(將單向關聯改為雙向關聯)兩個類都需要使用對方特性,但其間只有一條單線連線,新增乙個反向指標,並修改函式,使能夠同時更新兩條連線。
//兩人彼此相愛時,心裡都有對方
class boy
class girl
change bidirectional association to unidiredtional(將雙向關聯改為單向關聯)兩個類之間有雙向關聯,但其中乙個類如今不再需要另乙個類的特性。去除雙向關聯。
//女孩不喜歡男孩了
class boy
class girl
replace magic number with symbolic constant(以字面常量取代魔法數)你有乙個字面數值,帶有特別含義。創造乙個殘聯,根據其意義為它命名,並將上述的字面數值替換為這個常量。
重構前
public boolean testlove()
重構後
//這裡的常量要放在離函式近的地方
public static int days = 999;
public boolean testlove()
encapsulate field(封裝字段)你的類中存在乙個public欄位,將它宣告為private,並提供相應的訪問函式。(就是我們所說的set,get方法)
重構前
private string flowernum
重構後
private string flowernumber;
public string getflowernumber()
public void setflowernumber(string flowernumber)
encapsulate collection(封裝集合)有個函式返回乙個集合,讓這個函式返回該集合的乙個唯讀副本,並在這個類中提供新增/移除集合元素的函式。(具體可以看書本例子)
replace type code with class(以類取代型別碼)
類之中有乙個數值型別碼,但它並不影響類的行為,以乙個新的類替換該數值型別碼。(具體可以看書本例子)
replac type code with subclasses(以子類取代型別碼)
你有乙個不可變的型別碼,它會影響類的行為,以子類取代這個型別碼。(具體可以看書本例子)
replace type code with state/strategy(以state/strategy)取代型別碼
你有乙個型別碼,它會影響類的行為,但你無法通過繼承手法消除它,以狀態物件取代型別碼。(具體可以看書本例子)
replace subclass with fields(以欄位取代子類)
你的各個子類的唯一差別只在,」返回產量資料」的函式身上。修改這些函式,使它們返回超類中的某個新增字段,然後銷毀之類。(具體可以看書本例子)
來自亦舒《花解語》
優雅程式設計之這樣處理邊界,你就「正常」了!
貓和狗結婚,不久鬧離婚。法官問原因,狗說 貓婚後每晚都不回家,行為不軌。貓大喊 冤枉啊,我只是去追老鼠。狗說 法官你聽聽。如何優雅處理與第三方api的邊界問題?1 學習性測試 在專案中引入第三方api的新版本,測試專案是否正常工作,當然我們基本上沒有時間去重頭學習和研究第三方工具或者自己寫 來實現第...
優雅程式設計之這樣注重實效,你就「正常」了(十二)
專案開發過程中,注重實效的途徑?下面是來自 程式設計師修煉之道 中,自己的一些總結 重複的危害 系統中的每一項知識都必須具有單一,無歧視,權威的表示。不要重複你自己 重複是怎樣發生的 讓復用變得更容易 正交性 正交性 從幾何學中借來的術語,如果兩條直線相交成直角,他們就是正交的。兩個事物中乙個發生變...
優雅程式設計之專案注意這些,你就「正常」了(十七)
今天被公司開除了 好難過 事情的起因是我覺得很冤枉的 昨天領導發通知說 明早8 00開會 帶好你們吃飯的傢伙在辦公室集合。結果到辦公室一看 懵逼了!同事們都帶著膝上型電腦 我特麼拿了個碗 茄子甲 大家一起照張合影吧!眾茄子 好啊,好啊!茄子甲 我喊一二三大家一起喊 人類!乙隻茄子好奇地問 為什麼要喊...