菜鳥的C#學習之旅——重構
阿新 • • 發佈:2018-12-27
目錄
一、定義
重構:重構就是通過調整程式程式碼改善軟體的質量、效能,使其程式的設計模式和架構更趨合理。提高軟體的擴充套件性和維護性。
我個人的理解是:優化程式碼結構,消除或避免不必要的冗餘。
二、使用標準
“事不過三”原則
強調程式碼中的一個值,一段程式碼,相同的功能,如果出現了兩次以上,就要提取為巨集、變數、方法、模組,以方便重用。
三、舉例:(不用重構的情形)
如果我們不使用重構將會怎麼樣?
Class Animal//父類 { Public virtual string Shout() { Return""; } } Class Cat:Animal//子類繼承父類 { Public override string Shout() { string result = ""; for (int i =0; i <ShoutNum; i++) { result+="喵"; } return "我的名字叫:"+result; } } Class Dog:Animal//子類繼承父類 { Public override string Shout() { string result = ""; for (int i =0; i <ShoutNum; i++) { result+="汪"; } return "我的名字叫:"+result; } }
這種方式怎麼樣?現在才兩個小動物,如果現在有1000個小動物小參加這個活動呢?難道我們需要寫1000遍嗎?答案是當然不...我們需要將這些不必要的冗餘全部去掉,那我們怎麼去掉這些冗餘呢?這就是今天我要講到的重構,它可以起到優化程式碼結構,消除不必要的冗餘。下面看我對這個程式碼的處理:
四、舉例:(使用重構的情形)
我們使用重構方式,看程式碼是不是簡單了很多。
Class Animal { Public string Shout() { string result = ""; for (int i = 0; i<shoutNum;i++) { result += getShoutSound()+","; return"我的名字叫:"+result; } } protected virtual string getShoutSound() { return""; } } Class Cat:Animal { protected override string getShoutSound() { return"喵"; } } Class Dog:Animal { protected override string getShoutSound() { return"旺"; } }
這樣是不是簡單了很多呢?把每次都需要重複的程式碼將其放入到父類當中去,子類的冗餘是不是消除了很多啊,其實一目瞭然。
五、總結
其實上面只是從一方面對重構進行了簡單的理解,其實它在我們的寫程式碼過程中遠遠不是這些,當然,我覺得我們具有這樣的思想遠比懂得一到兩種重構的方法重要的多。如果我有講的不到位的地方還望大家多多的指出。本人在此感激不敬。