- 給你entitiess有意義的名稱
- 給你entitiess有意義的名稱
- 給你entitiess有意義的名稱
- 給你entitiess有意義的名稱
- 的通用代碼
- 可能信號/解壓縮功能插槽/偵聽器/觀察者的概念適合你。
編輯:重構例子:
假設你的代碼是:
void Button1_Click() {
function1();
function2();
function3();
function4();
function5();
}
void Button2_Checked(int variable0) {
if (variable0) {
function1();
function2();
} else {
function1();
function2();
function3();
function4();
function5();
}
}
步驟0-10是找到所有有意義的名稱,按鈕,功能, 變量中,參數(一次只重命名一個實體;爲避免發帖,我跳過了這個):
void orderPizzaButton_Click() {
requestSalamis();
requestAnchovis();
requestShitake();
requestCheese();
requestGroundMeat();
}
void lasagnePervesityLevel_Changed(int newValue) {
if (newValue <= 0) {
requestCheese();
requestGroundMeat();
} else {
requestSalamis();
requestAnchovis();
requestShitake();
requestCheese();
requestGroundMeat();
}
}
第11步是找到commons在這些功能,並從中提取新的,可重複使用的功能 :
void orderPizzaButton_Click() {
requestStrangeIngredientCombination();
}
void lasagnePervesityLevel_Changed(int newValue) {
if (newValue <= 0) {
requestCheese();
requestGroundMeat();
} else {
requestStrangeIngredientCombination();
}
}
void requestStrangeIngredientCombination() {
requestSalamis();
requestAnchovis();
requestShitake();
requestCheese();
requestGroundMeat();
}
第12步是優化您的常用代碼搜索(認爲它作爲一種標準化的):
void orderPizzaButton_Click() {
requestStrangeIngredientCombination();
}
void lasagnePervesityLevel_Changed(int newValue) {
if (newValue <= 0) {
requestStandardComponents();
} else {
requestStrangeIngredientCombination();
}
}
void requestStandardComponents() {
requestCheese();
requestGroundMeat();
}
void requestStrangeIngredientCombination() {
requestSalamis();
requestAnchovis();
requestShitake();
requestStandardComponents();
}
雖然在這個例子中似乎沒有保存代碼,但實際上它往往是將。此外,保存代碼行並不重要,關鍵在於減少冗餘,因爲一旦你決定你的異端烤寬麪條和奇怪的披薩也應該保留chilis和Sylvester Stallone的圖像,你不僅會有代碼複製,但是工作重複;最重要的是,有可能忘記代碼中某些地方的新功能。當然,這非常糟糕,甚至是關鍵業務。假設你的客戶希望他們的烤寬麪條上有一個西爾維斯特·史泰龍的形象,就像你的營銷活動承諾的一樣,然後沒有誰訂購比薩餅就得到了這個形象,而只有那些訂購了千層麪的人。
還有更多的重構和設計,取決於實際的代碼。我真的推薦 以獲得以下書籍。另外,最重要的經驗法則是:一次一步。做一個小的重構,編譯,測試。
- 重構 - 改善既有代碼的由Martin Fowler Addison-Wesley出版社
- C中的設計++編碼標準:101分的規則,準則和最佳做法C++由Herb薩特,安德烈Alexandrescu的(C++在 - 深度系列)Addison-Wesley出版社
- 設計模式:通過伽馬,頭盔,約翰遜,Vlissides(俗稱四人幫,爲四人幫)可複用面向對象軟件的元素,再次Addison-Wesley出版社
你的代碼是好的,但我無法理解我如何在我的場景中使用它。基本上我不是很先進的用戶。這將是更好的,如果你請給我充分的代碼,所有我的function1(),function2()等等將被稱爲一個接一個與你的上述代碼。謝謝。我只需要看看我的函數如何在你的實現中被調用。 plzz幫助我。謝謝 – Mou 2011-06-15 08:33:14