一、Duplicated Code(重複代碼)函數
壞味道行列中首當其衝的就是重複代碼。若是你在一個以上的地點看到相同的程序結構,那麼能夠確定:設法將它們合而爲一,程序會變得更好。it
二、Long Method(過長函數)io
應該積極的分解函數,咱們遵循這樣一條原則:每當感受須要用註釋來講明點說明的時候,咱們就把須要說明的東西寫進一個獨立函數中,並以其用途(而非實現手法)命名。咱們能夠對一組甚至短短一行代碼作這件事情。哪怕替換以後的函數調用動做比函數自身還長,只要函數名可以解釋其用途,咱們也該堅決果斷地那麼作。關鍵不在於函數的長度,而在於「作什麼」和「如何作」之間的語義距離。基礎
如何肯定該提煉哪一段代碼呢?一個很好的技巧是:尋找註釋。他們一般能指出代碼用途和實現手法之間的語義距離。若是代碼前方有一行註釋,就是在提醒你:能夠將這段代碼替換成一個函數,並且能夠在註釋的基礎上給這個函數命名。就算只有一行代碼,若是它須要以註釋來講明,那也值得jiagnta將它提煉到獨立函數中去。循環
條件表達式和循環一般也是提煉的信號。可使用Decompose Conditional(分解條件表達式)處理條件表達式、至於循環,應該將循環和其內的代碼提煉到一個獨立函數中。技巧