1. 程式人生 > >菜鳥的C#學習之旅——重構

菜鳥的C#學習之旅——重構

目錄

一、定義

二、使用標準

三、舉例:(不用重構的情形)

四、舉例:(使用重構的情形)

五、總結


一、定義

重構:重構就是通過調整程式程式碼改善軟體的質量、效能,使其程式的設計模式和架構更趨合理。提高軟體的擴充套件性和維護性。

我個人的理解是:優化程式碼結構,消除或避免不必要的冗餘。

二、使用標準

“事不過三”原則

強調程式碼中的一個值,一段程式碼,相同的功能,如果出現了兩次以上,就要提取為巨集、變數、方法、模組,以方便重用。

三、舉例:(不用重構的情形)

如果我們不使用重構將會怎麼樣?

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"旺";
    }
}

這樣是不是簡單了很多呢?把每次都需要重複的程式碼將其放入到父類當中去,子類的冗餘是不是消除了很多啊,其實一目瞭然。

五、總結

其實上面只是從一方面對重構進行了簡單的理解,其實它在我們的寫程式碼過程中遠遠不是這些,當然,我覺得我們具有這樣的思想遠比懂得一到兩種重構的方法重要的多。如果我有講的不到位的地方還望大家多多的指出。本人在此感激不敬。