轉(zhuǎn)眼間就到了2021年,元旦就說要對自己的2020做個總結(jié),一直拖到了今天。如果說用一個字來描述自己的2020年,那么我選難! 1月份,新冠咆哮而至,那個時候還不知道它有...
轉(zhuǎn)眼間就到了2021年,元旦就說要對自己的2020做個總結(jié),一直拖到了今天。如果說用一個字來描述自己的2020年,那么我選難! 1月份,新冠咆哮而至,那個時候還不知道它有...
定義 DVPP(Digital Video Pre-Processing) 是昇騰AI處理器內(nèi)置的圖像處理單元。DVPP最底層是一個獨立于昇騰AI處理器中其他模塊的單獨專用加...
什么是重構(gòu)? 所謂重構(gòu)是這樣一個過程:在不改變代碼外在行為的前提下,對代碼作出修改,以改進程序的內(nèi)部結(jié)構(gòu)。本質(zhì)上說,重構(gòu)就是在代碼寫好之后改進它的設(shè)計。 重構(gòu)(名詞):對軟件...
(1)重復(fù)代碼。重復(fù)代碼首當(dāng)其沖。業(yè)內(nèi)有許多工具可以檢查代碼重復(fù)率,例如jsinspect就是檢查JavaScript代碼重復(fù)率的工具之一。重復(fù)代碼導(dǎo)致類似修改需要在代碼中修...
如果你想進行重構(gòu),首先的前提就是擁有一個可靠的測試環(huán)境。就算是自動進行重構(gòu)的工具,也需要測試來保證代碼的完整性與可靠性。 為什么需要單元測試? 保證質(zhì)量:隨著迭代的過程,開發(fā)...
在對象設(shè)計的過程中,“決定把責(zé)任放在哪兒”是最重要的事情之一。但無論使用對象技術(shù)多么嫻熟,也無法保證在設(shè)計對象時一次做對。因此,需要進行重構(gòu),改變原有的設(shè)計。 Move Me...
在面向?qū)ο蟮恼Z言中,通常會有直接訪問數(shù)據(jù)還是通過方法訪問數(shù)據(jù)的爭論。同時,面向?qū)ο蟮恼Z言也允許使用自己定義的新類型取代傳統(tǒng)語言的簡單數(shù)據(jù)類型。將數(shù)組轉(zhuǎn)換為對象、自封裝字段魔法...
條件邏輯有可能十分復(fù)雜,復(fù)雜的條件邏輯可能讓復(fù)雜度快速上升,并有可能導(dǎo)致代碼難以理解。因此,需要一些手段,來簡化它們。 Decompose Conditional(分解條件表...
本章主要針對的是對函數(shù)的重構(gòu),包括函數(shù)改名,參數(shù)增刪等。良好的函數(shù)調(diào)用可以增加代碼的可讀性和可維護性。 Rename Method(函數(shù)改名) 我們提倡的一種編程風(fēng)格是:將復(fù)...
概括關(guān)系(Generalization),就是平時所說的繼承關(guān)系。繼承是面向?qū)ο蟮恼Z言的重要特性,如何高效科學(xué)的使用繼承,是重構(gòu)的關(guān)鍵課題之一。 Pull Up Field(...
梳理并分解繼承體系 某個繼承體系同時承擔(dān)兩項責(zé)任,那么就建立兩個繼承體系,并通過委托關(guān)系讓其中一個可以調(diào)用另一個。 梳理后,重構(gòu)為: 首先識別出繼承體系所承擔(dān)的不同責(zé)任,然后...
閉包 閉包與匿名函數(shù)容易混淆。閉包是指有權(quán)訪問另一個函數(shù)作用域中的變量的函數(shù)。創(chuàng)建閉包的常見方式,就是在一個函數(shù)內(nèi)部創(chuàng)建另一個函數(shù) 在上面的例子中,3、4行定義value1 ...
重構(gòu)的手法中,很大的一部分就是對函數(shù)進行處理,使之更恰當(dāng)?shù)陌b代碼。一般公司的編程規(guī)范中,都會對函數(shù)長度進行限制(例如不能超過50行)。針對過長函數(shù)需要進行邏輯抽取,抽取過程...