亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

『重構--改善既有代碼的設計』讀書筆記----Spli

系統 1891 0

繼續開始我們重構手法的系列,今天介紹的是Split Temporary Variable---分解臨時變量。

在我們平常寫的程序中肯定有某些臨時變量被賦予了超過一個的責任。如果他們不是那種收集結果(temp = temp + QString("abc"))或者循環變量(i = i + 1),然而他們卻被賦值了 多于 一次。那么我們肯定說,這個變量被賦予了超過一個的責任,別看這是個小小問題,但這會阻擾我們閱讀者的判斷,我們會去揣測,這個變量到底是用來干嘛的。從而影響我們看清程序正常的思路。

因此,我們需要針對每次賦值,創造一個獨立,對應的臨時變量。

做法:1) 在需要分解臨時變量的地方的聲明和他第一次被使用的地方,修改他的名稱。

?????????? 2) 將臨時變量改完名稱之后聲明為const

?????????? 3) 在第二次賦值的地方重新聲明那個臨時變量

?????????? 4) 編譯測試

?????????? 5) 重復上述過程,每次都在聲明處做到改名,并修改在 下次 賦值之前的引用點。

例子:

      
        double
      
      
         getCost() 

{

    
      
      
        double
      
      
         res;



    
      
      
        double
      
       mealMoney = m_chickMoney +
      
         m_chipMoney;



    res 
      
      +=
      
         mealMoney;



    mealMoney 
      
      = m_cocoaMoney +
      
         m_coffeeMoney;



    res 
      
      +=
      
         mealMoney;



    
      
      
        return
      
      
         res;

}
      
    

可以看到,其中的mealMoney被賦值了兩次,并且他沒有做到累積結果的作用,累積結果給了res。所以,我們需要做重構,讓這個變量的意圖變的更加明確。

所以我們第一步,尋找這個變量第一次聲明的地方,聲明為const,并且將他改名,然后修改在第二次賦值之前的所有引用點,并且把第二次賦值進行重新聲明:

      
        double
      
      
         getCost() 

{

    
      
      
        double
      
      
         res;



    const 
      
      
        double
      
       foodMoney = m_chickMoney +
      
         m_chipMoney;



    res 
      
      +=
      
         foodMoney;



    
      
      
        double
      
       mealMoney = m_cocoaMoney +
      
         m_coffeeMoney;



    res 
      
      +=
      
         mealMoney;



    
      
      
        return
      
      
         res;

}
      
    

可以看到,mealMoney已經被我們改成了const double foodMoney,并且我們修改了之后的引用點,并且我們在第二次賦值mealMoney的地方重新添加了聲明。重復上述過程,進行第二次變量賦值的重構

      
        double
      
      
         getCost() 

{

    
      
      
        double
      
      
         res;



    
      
      
        const
      
      
        double
      
       foodMoney = m_chickMoney +
      
         m_chipMoney;



    res 
      
      +=
      
         foodMoney;



    
      
      
        const
      
      
        double
      
       drinkMoney = m_cocoaMoney +
      
         m_coffeeMoney;



    res 
      
      +=
      
         drinkMoney;



    
      
      
        return
      
      
         res;

}
      
    

可以看到,我們完成了變量的重構之后,函數對于臨時變量之前的mealMoney的困惑已經沒有了,整體因為變量名字的本身使得邏輯更加清晰。當然,這里我們暫時不考慮其他的重構手法:)

『重構--改善既有代碼的設計』讀書筆記----Split Temporary Variable


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲日本va中文字幕 | 欧美在线国产 | 国产欧美精品国产国产专区 | 中国一级特黄真人毛片免 | 亚洲精品中文字幕不卡在线 | 欧洲性大片xxxxx久久久 | 67194在线午夜亚洲 | 久久福利青草免费精品 | 久久精品免费一区二区三区 | 九九热九九热 | 日本中文字幕在线观看视频 | 四虎最新免费网址 | 国产亚洲精品一区二区 | 在线精品国内视频秒播 | 免费观看黄色 | 377p欧洲最大胆艺术 | 国产色在线视频 | 久久精品国产日本波多麻结衣 | 欧美一二三区 | 欧美亚洲精品小说一区二三区 | 亚洲高清二区 | 色视频在线观看视频 | 欧美乱xxxxx强 | 狠狠躁天天躁夜夜躁婷婷 | 9re视频这里只有精品 | 国产一区二区三区四区在线观看 | 香蕉久久一区二区三区 | 久久精品国产99久久 | 国产成人高清亚洲一区91 | 老司机精品99在线播放 | 亚洲在线中文字幕 | 久久精品中文字幕首页 | 最新国产中文字幕 | 中文字幕在线观看国产 | 毛片女人毛片一级毛片毛片 | 综合啪啪| 美女被a到爽视频在线观看 美女被cao的视频免费看 | 日本欧美久久久久免费播放网 | 五月婷婷色播 | 亚洲一级黄色大片 | 欧美一级毛片高清免费观看 |