多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > php開(kāi)源 > 綜合技術(shù) > 6 個(gè)重構(gòu)方法可幫你提升 80% 的代碼質(zhì)量

6 個(gè)重構(gòu)方法可幫你提升 80% 的代碼質(zhì)量

來(lái)源:程序員人生   發(fā)布時(shí)間:2014-09-23 21:14:23 閱讀次數(shù):2526次

  英文原文:Top 6 Refactoring Patterns to Help You Score 80% in Code Quality

  在過(guò)去做了不少代碼走讀,發(fā)現(xiàn)了一些代碼質(zhì)量上比較普遍的問(wèn)題,以下是其中的前五名

  1. 臃腫的類:
    類之所以會(huì)臃腫,是因?yàn)殚_(kāi)發(fā)者缺乏對(duì)最基本的編碼原則,即“單一職責(zé)原則”(SRP)的理解。這些類往往會(huì)變得很臃腫,是由于不同的且在功能上缺少關(guān)聯(lián)的方法都放在了相同的類里面。

  2. 長(zhǎng)方法:
    方法之所以會(huì)變得很長(zhǎng)主要是有以下幾個(gè)原因:

    • 許多沒(méi)有關(guān)聯(lián)性的、功能復(fù)雜的模塊的代碼都放在相同的方法內(nèi)。這主要是開(kāi)發(fā)者缺乏SRP的概念。
    • 多種條件都放在同一個(gè)方法內(nèi),這在長(zhǎng)方法內(nèi)經(jīng)常會(huì)發(fā)生的。這是由于缺乏McCabe代碼復(fù)雜度和SRP的概念的比較。
  3. 大量的傳參:
    我經(jīng)常遇到這幾種情況,一些方法跟另一些方法進(jìn)行交互,或者調(diào)用另一些方法的時(shí)候傳入大量的參數(shù)。這就會(huì)出現(xiàn)如果更改了其中一個(gè)參數(shù),就得在多個(gè)方法內(nèi)進(jìn)行更改。

  4. 常量值無(wú)處不在:
    經(jīng)常會(huì)發(fā)現(xiàn)開(kāi)發(fā)者(尤其是新手)會(huì)使用一些具有明確含義的常量值(主要是魔鬼數(shù)字),但沒(méi)有給它們賦予合適的常量變量。這會(huì)降低代碼的可讀性和可理解性。

  5. 模糊的方法名:
    許多時(shí)候,以下取的方法名會(huì)影響代碼的可讀性和可理解性:

    • 模糊的不具有任何意義的方法名
    • 技術(shù)性的,卻沒(méi)有提及相關(guān)領(lǐng)域的名稱

  6個(gè)處理上面代碼異味的重構(gòu)方法(手法)

  以下是6個(gè)可以用來(lái)幫助你解決80%(80-20原則)的代碼質(zhì)量問(wèn)題的重構(gòu)方法,并能幫助你成為一個(gè)更優(yōu)秀的開(kāi)發(fā)者。

  1. 提取類/抽離方法:正如上面提到的,像“臃腫的類”(一個(gè)類提供了本該有幾個(gè)類提供的功能)這種代碼異味應(yīng)該將原有類中的方法和屬性移動(dòng)到適當(dāng)數(shù)目的新類中去。舊類中對(duì)應(yīng)新類的方法和屬性應(yīng)該被移除。另外,有時(shí)候一些類過(guò)于臃腫是因?yàn)樗吮黄渌愂褂帽緫?yīng)該是其他類的成員方法的成員方法。這些方法也應(yīng)該被遷移到合適的類中。
  2. 提取方法:像上面提到的“過(guò)長(zhǎng)的方法”這種代碼異味可以通過(guò)從舊方法中提取代碼到一個(gè)或多個(gè)新方法中消除。
  3. 分離條件:許多時(shí)候,一個(gè)方法很長(zhǎng)是因?yàn)榘脦讉€(gè)分支語(yǔ)句(if-else)。這些分支條件可以被提取和移動(dòng)到幾個(gè)單獨(dú)的方法中。這確實(shí)能大大改善代碼可讀性和可理解性。
  4. 引入?yún)?shù)對(duì)象/保留全局對(duì)象:在我做代碼審查時(shí)發(fā)現(xiàn)另外一個(gè)很常見(jiàn)的情況 - 好幾個(gè)參數(shù)被傳入方法。問(wèn)題主要與需要從已有方法中增加或者移除一個(gè)方法參數(shù)有關(guān)。在這種場(chǎng)景,建議將相關(guān)方法參數(shù)組成一個(gè)對(duì)象(引入?yún)?shù)對(duì)象),讓方法傳遞這些對(duì)象而不是每個(gè)單獨(dú)的參數(shù)。
  5. 用符號(hào)常量替換魔法數(shù)字:對(duì)于有意義的并且到處被使用的字面常量,應(yīng)該為它們分配一個(gè)命名常量。這能大大增強(qiáng)代碼可讀性和可理解性。
  6. 重命名方法: 正如上面提到的,模糊不清的方法名會(huì)影響代碼的可使用性。這些模糊不清的名稱應(yīng)該重命名為有意義的可能與業(yè)務(wù)術(shù)語(yǔ)有關(guān)的名稱,來(lái)幫助開(kāi)發(fā)者通過(guò)業(yè)務(wù)上下文 更好地理解代碼。這很需要技巧并且要求開(kāi)發(fā)者與業(yè)務(wù)專家一起協(xié)作來(lái)理清代碼需要滿足的業(yè)務(wù)需求。有趣的是,這種重構(gòu)方法看起來(lái)似乎非常容易理解,但是常常 被許多開(kāi)發(fā)者忽視,雖然在Eclipse這種IDE的refactor菜單項(xiàng)中經(jīng)常出現(xiàn)這一項(xiàng)。
生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 日韩精品欧美高清区 | 日本大胆欧美艺术337p | 国产a v高清一区二区三区 | 九色精品在线 | 欧美人成在线观看ccc36 | 国产精品亚洲欧美日韩一区在线 | 中文字幕第十页 | 最新中文字幕第一页 | a天堂视频 | 日本午夜在线观看 | 极品福利视频 | 亚洲码在线 | 亚洲欧美日韩综合一区久久 | 日本免费新一区二区三区 | 韩国三级做爰中文字幕 | 牛和人交videos欧美3d | 亚洲最大色图 | 国产日产欧美精品 | 亚洲精品亚洲人成毛片不卡 | 亚洲国产综合视频 | 久久国产精品老女人 | 欧美日韩一区视频 | 亚洲欧美精品天堂久久综合一区 | 一本大道香蕉大无线视频 | 一级女人毛片人一女人 | 日本高清精品动漫 | 五月天综合 | 国产欧美日韩亚洲精品区2345 | 国产乱码精品一区二区三区卡 | 亚洲精品亚洲人成在线 | 免费xx| 欧美成成人免费 | 国产日产欧美精品一区二区三区 | 欧美黄色片在线观看 | 欧美18一19sex性瑜伽 | 欧美 video | 在线亚洲欧洲福利视频 | 综合久久久久久 | 在线观看亚洲网站 | 亚洲欧美日韩成人 | xxxxx日韩|