日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《重构:改善既有代码的设计》阅读笔记

發(fā)布時(shí)間:2024/2/28 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《重构:改善既有代码的设计》阅读笔记 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

第一章 重構(gòu):第一個(gè)案例

重構(gòu)之前,首先檢查自己是否有一套可靠的測(cè)試機(jī)制。這些測(cè)試必須有自我檢驗(yàn)?zāi)芰Α?/p>

重構(gòu)技術(shù)就是以微小的步伐修改程序。如果你犯下錯(cuò)誤,很容易便可發(fā)現(xiàn)它。

任何一個(gè)傻瓜都能寫出計(jì)算機(jī)可以理解的代碼,唯有寫出人類容易理解的代碼,才是優(yōu)秀的程序員。
代碼應(yīng)該表現(xiàn)自己的目的,這一點(diǎn)非常重要。

重構(gòu)的節(jié)奏:測(cè)試、小修改、測(cè)試、小修改…正是這種節(jié)奏讓重構(gòu)得以快速而安全地前進(jìn)。

第二章 重構(gòu)原則

重構(gòu)(名詞):對(duì)軟件內(nèi)部結(jié)構(gòu)的一種調(diào)整,目的是在不改變軟件可觀察行為的前提下,提高其可理解性,降低其修改成本。
重構(gòu)(動(dòng)詞),使用一系列重構(gòu)首發(fā),在不改變軟件可觀察行為的前提下,調(diào)整其結(jié)構(gòu)。

添加新功能時(shí),你不應(yīng)該修改既有代碼,只管添加新功能。通過測(cè)試,你可以衡量自己的工作進(jìn)度。
重構(gòu)時(shí)你就不能再添加新功能,只管改進(jìn)程序結(jié)構(gòu)。此時(shí)你不應(yīng)該添加任何測(cè)試(除非發(fā)現(xiàn)先前遺漏的東西),只在絕對(duì)必要(用于處理接口變化)時(shí)才修改測(cè)試。

重構(gòu)本來就不是一件應(yīng)該特別撥出時(shí)間做的事情,重構(gòu)應(yīng)該隨時(shí)隨地進(jìn)行。你不應(yīng)該為重構(gòu)而重構(gòu),你之所以重構(gòu),是因?yàn)槟阆胱鰟e的什么事,而重構(gòu)可以幫助你把那些事做好。

添加功能時(shí)重構(gòu);修補(bǔ)錯(cuò)誤時(shí)重構(gòu);復(fù)審代碼時(shí)重構(gòu)

是什么讓程序難以修改?

  • 難以閱讀的程序,難以修改
  • 邏輯重復(fù)的程序,難以修改
  • 添加新行為時(shí)需要修改已有代碼的程序,難以修改
  • 帶復(fù)雜條件邏輯的程序,難以修改

何時(shí)不該重構(gòu)?

有時(shí)候你根本不應(yīng)該重構(gòu),例如當(dāng)你應(yīng)該重新編寫所有代碼的時(shí)候。有時(shí)候既有代碼寫的太混亂,重構(gòu)它還不如重新寫一個(gè)來得簡(jiǎn)單。重寫的一個(gè)清楚訊號(hào)就是:現(xiàn)有代碼根本不能正常運(yùn)作。而‘重構(gòu)’之前,代碼必須起碼在大部分情況下正常運(yùn)作。

重構(gòu)的確能夠提高生產(chǎn)力。如果你最后沒有足夠時(shí)間,通常就表示你其實(shí)早該進(jìn)行重構(gòu)。

重構(gòu)與設(shè)計(jì)

初學(xué)編程時(shí),渾渾噩噩地進(jìn)行開發(fā)。然而很快我便發(fā)現(xiàn),事先做好設(shè)計(jì)可以讓我節(jié)省返工的高昂成本

第三章 代碼的壞味道

  • 重復(fù)代碼
  • 過長(zhǎng)函數(shù)
  • 過大的類
  • 過長(zhǎng)參數(shù)列(有了對(duì)象,你就不必把函數(shù)需要的所有東西以參數(shù)傳遞給它了。太長(zhǎng)的參數(shù)列難以理解。)
  • 發(fā)散式變化(我們希望一旦需要修改,就只在某一點(diǎn)處修改)
  • 依戀情結(jié)(某個(gè)函數(shù)為了計(jì)算某個(gè)值,從另一個(gè)對(duì)象那兒調(diào)用了大部分函數(shù))
  • 過度耦合的消息鏈
  • 異曲同工的類(兩個(gè)函數(shù)做同一件事,卻有著不同的函數(shù)名)
  • 過多的注釋(長(zhǎng)長(zhǎng)的注釋之所以存在是因?yàn)榇a很糟糕。當(dāng)代碼已經(jīng)清楚的說明一切時(shí),注釋就多余了。當(dāng)你感覺需要撰寫注釋時(shí),請(qǐng)先嘗試重構(gòu),試著讓所有注釋都變得多余。)

每當(dāng)感覺需要以注釋來說明點(diǎn)什么的時(shí)候,我們就把需要說明的東西寫進(jìn)一個(gè)獨(dú)立函數(shù)中,并以其用途(而非實(shí)現(xiàn)手法)命名。哪怕替換后的函數(shù)調(diào)用動(dòng)作比函數(shù)自身還長(zhǎng),只要函數(shù)名稱能夠解釋其用途,我們也該毫不猶豫地那么做。關(guān)鍵不在于函數(shù)的長(zhǎng)度,而在于函數(shù)“做什么”和“如何做”之間的語義距離。

條件表達(dá)式和循環(huán)常常也是提煉的信號(hào)。你應(yīng)該將循環(huán)和其內(nèi)的代碼提煉到一個(gè)獨(dú)立的函數(shù)中。

測(cè)試
編寫測(cè)試代碼時(shí),我往往一開始先讓他們失敗。之所以這么做,是為了向自己證明:測(cè)試機(jī)制的確可以運(yùn)行,并且的確測(cè)試了它該測(cè)試的東西。

總結(jié)

以上是生活随笔為你收集整理的《重构:改善既有代码的设计》阅读笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。