国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

重構:你可能不知道的重構場景

codecook / 785人閱讀

摘要:過多的注釋注釋多并不是一件壞事,它是重構的領路人,當你感覺需要為某段代碼寫上注釋時,這意味著你認為這段代碼不容易被他人理解,也側面證明了這就是重構發出的預警信號,所以當想要寫注釋時,就先重構,爭取讓注釋都變得多余。

什么是重構?

“重構”一詞想必你已經聽膩了,就是整理代碼唄,不不不,重構旨在不改變調用者行為的前提下,對內部邏輯進行調整優化,提高其理解性,降低其修改成本,它是一門藝術,是程序員至高無上的榮耀……

何時重構?怎么重構?

經常聽到周邊的人抱怨沒有時間重構,重構并不是多帶帶抽出時間集中處理的,而是當你想要做某個功能時,隨手把需要重構的地方安排了。

邏輯重復

重復代碼是最核心常見的預警信息,如果有兩個及以上的重復邏輯,就應該考慮將其合并。比如同一類或不同類中的函數存在相同邏輯的部分,就應該把相同部分抽象為獨立函數或類。

長函數

應該有很多同學經手過別人數百行甚至上千行的代碼,讓人質疑人生。為方便理解,最好的方式是把長函數分解為若干小函數,搭配上易理解的函數名,便可以像自然語言一樣理解代碼。

參數過多

有一種習慣非常不好,就是把所有要用到的變量當做函數的參數,這樣會加劇代碼的理解難度,拓展極其困難,當需要更多數據時,不得不修改所有函數的參數,牽一發動全身。如果把對象作為參數,需要用到的數據都放進對象里,就可以有效解決參數過長的問題。

函數出軌

你要是發現一個函數頻繁的調用某一個類,它很可能給你戴了綠帽子,不如忍痛割愛,放其自由吧,把函數歸并到它喜歡的類,也許他們在一起生活更為合適,你一定會找到一個適合的人。

變化擴散

如果新加入一個業務類型(例如支付渠道、數據庫類型等)時,需要改動很多地方才能實現,這就意味著還有改進的空間,可以將引起變化的原因抽出來做為配置,并將變化的函數放置到一個類中,這樣不僅可以做到修改一處就應對變化,還可以很清晰的知道哪些函數會受到影響。

工具小助手

一款語言包含很多基本類型與內置函數,但不能滿足所有需求,比如金額單位轉換、時間數組格式轉換、UUID生成等簡單又容易忽略的小功能,如果這些功能出現的頻率很高,規則改變會帶來一連串的修改,這時可以考慮將這些小功能抽象為工具函數,并將這些函數組合為工具類。

意淫的功能

有些邏輯以為將來會有一些變化,于是安插了很多鉤子函數應對非必要的特殊情況,這樣往往提高了系統復雜性和理解成本,如果安插的鉤子都能被用到且有價值,那么就使用,否則還是不要放在代碼里阻礙視線了。

switch過多

假如現在要做一個支持微信、支付寶、招行等渠道的支付平臺,需要對接不同渠道,因為不同渠道對接方式不同,就需要用switch來根據類型選擇對應渠道的對接方式,但是很多地方都可能用到這個switch,一旦新渠道加入就要滿世界的找哪里用到了switch。

可以將switch語句移植為獨立的函數,將這些函數組成基類,case語句調用子類對應的函數,具體實現讓子類去完成,這樣支付渠道的增加和變更只需要修改一個類即可。

多余的類

創建的每一個類,對于其他人來講都是有理解成本的,如果曾經為某個變化所添加的類,在實際場景中并沒有發生變化,那么就把這個類去掉吧,我們需要真正有價值、理解成本低的系統。

讓人犯暈的變量

一個類會設置一些為特殊情況設置的變量,這些變量不一定都會被使用,經手你代碼的人還要猜測當時設置這些變量的目的,非常讓人頭大,不如把這些變量和相關函數多帶帶放在一個類中,屏蔽具體細節,需要的功能通過函數來表達,會使功能擴展更高效。

幽靈類

項目中偶爾會出現一些“幽靈類”,這些類沒有做什么實際工作,只是負責調用其它的類,不如把這個“中間人”去掉,讓實際要調用的那個類與調用者發生關系。

雷同的類

如果兩個類,其中某幾個函數作用相同,名稱不同,那就可以通過修改名稱或移植函數的方式將兩個相似的類保持一致,然后把兩個類抽象出基類,以便擴展。

過多的注釋

注釋多并不是一件壞事,它是重構的領路人,當你感覺需要為某段代碼寫上注釋時,這意味著你認為這段代碼不容易被他人理解,也側面證明了這就是重構發出的預警信號,所以當想要寫注釋時,就先重構,爭取讓注釋都變得多余。

如果你喜歡本文,可以關注微信公眾號“關愛程序員社區”(icoder_club),干貨更不停

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/31447.html

相關文章

  • Java代碼分析器(六): 大規模自動重構經驗談

    摘要:接口級行為不變,內部行為盡量不變,類結構盡量不變為代碼模式和場景確立一組明確的前提條件,重構必須滿足前提條件才能進行。但是大規模難以完美做到這三點。因此自動重構是革命性的技術。 另載于 http://www.qingjingjie.com/blogs/7 最后再啰嗦一篇吧,分享些宏觀經驗,供需要做類似事情的人參考。 技術示例在前篇! 伸手黨繞行! 大規模系統重構,不可避免要觸到各個團隊...

    Caizhenhao 評論0 收藏0
  • 重構---改善既有代碼設計》

    摘要:為何重構重構有四大好處重構改進軟件設計如果沒有重構,程序的設計會逐漸腐敗變質。經常性的重構可以幫助維持自己該有的形態。你有一個大型函數,其中對局部變量的使用使你無法采用。將這個函數放進一個單獨對象中,如此一來局部變量就成了對象內的字段。 哪有什么天生如此,只是我們天天堅持。 -Zhiyuan 國慶抽出時間來閱讀這本從師傅那里借來的書,聽說還是程序員的必讀書籍。 關于書的高清下載連...

    baihe 評論0 收藏0
  • 重構-改善既有代碼設計(五)--重構列表

    摘要:什么是重構列表重構方法需要以一種特定的格式記錄下來。這些重構手法到底有多成熟本書中提到的重構手法第章。做法創造新函數,以用途命名提煉代碼到函數中檢查變量名是否符合規范在源函數中,將被提煉代碼替換為函數引用測試范例重構前重構后 什么是重構列表 重構方法需要以一種特定的格式記錄下來。按照格式記錄下來的重構方法的集合叫重構列表 重構的記錄格式 每個重構手法可分為5個部分: 名稱 構建重構詞匯...

    davidac 評論0 收藏0
  • React 單元測試策略及落地

    摘要:寫好的單元測試,對開發速度項目維護有莫大的幫助。我認為單元測試的上下文存在于敏捷中。接下來一小節,就可以正式進入如何做的環節了如何寫好單元測試。前面說到,我們對單元測試寄予 寫好的單元測試,對開發速度、項目維護有莫大的幫助。前端的測試工具一直推陳出新,而測試的核心、原則卻少有變化。與產品代碼一并交付可靠的測試代碼,是每個專業開發者應該不斷靠近的一個理想之地。本文就圍繞測試講講,為什么我...

    nifhlheimr 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<