Clean Code 無(wú)瑕的程式碼 第12章 羽化
? ? ? ?第十二章的內(nèi)容是簡(jiǎn)單設(shè)計(jì)四守則,作者講述寫(xiě)程式的內(nèi)功心法。
簡(jiǎn)單設(shè)計(jì)四守則
執(zhí)行完所有的測(cè)試
沒(méi)有重複的部分
表達(dá)程式設(shè)計(jì)師的本意
最小類(lèi)別和方法的數(shù)量
簡(jiǎn)單設(shè)計(jì)守則1:執(zhí)行完所有的測(cè)試
科學(xué)的特性是「可證偽」,因此能夠測(cè)試的程式才是可靠的程式。
為了能夠測(cè)試程式會(huì)走向小型、單一用途的類(lèi)別,遵守單一職責(zé)原則(SRP)。
為了降低程式之間都耦合,會(huì)使用相依性反向(DIP)、相依性注入、介面與抽象類(lèi)。
簡(jiǎn)單設(shè)計(jì)守則2~4:程式重構(gòu)
有測(cè)試程式就不怕程式重構(gòu)的時(shí)候程式會(huì)被改壞。
程式重構(gòu)的目的
增加凝聚性
降低耦合度
分離關(guān)注點(diǎn)
模組化系統(tǒng)關(guān)注點(diǎn)
函數(shù)與類(lèi)別瘦身
選擇良好的名稱
禁止重複
將相同的程式碼寫(xiě)成一個(gè)函數(shù)。
在小處重複使用,才能實(shí)現(xiàn)大處重複使用。
書(shū)中舉出一個(gè)化繁為簡(jiǎn)的範(fàn)例。類(lèi)別之中的函數(shù)有相同的部分,重構(gòu)的時(shí)候可以用方法提取新建一個(gè)函數(shù),然而這樣做又會(huì)違反單一職責(zé)原則(SRP)。
作者建議用設(shè)計(jì)模式樣板方法(TEMPLATE METHOD)解決這個(gè)問(wèn)題。
原有的「提取方法」會(huì)違反單一職責(zé)原則(SRP),樣板方法(TEMPLATE METHOD)用「提取類(lèi)別」的方式,子類(lèi)別提供不重複的資訊。
具表達(dá)力
內(nèi)容主要在說(shuō)可讀性,可用以下方式增加程式可讀性
選擇一個(gè)良好的名稱
讓函數(shù)類(lèi)別簡(jiǎn)短
可用設(shè)計(jì)模式做為類(lèi)別名稱增加可讀性
最小化類(lèi)別及方法的數(shù)量
微型化的結(jié)果會(huì)造成太多的類(lèi)別,作者提醒「最小化類(lèi)別及方法的數(shù)量」簡(jiǎn)單設(shè)計(jì)四原則優(yōu)先權(quán)比較後面,不可以變成教條主義。
總結(jié)
本章內(nèi)容是作者們數(shù)十年經(jīng)驗(yàn)的結(jié)晶。讀者看懂本章內(nèi)容可快速習(xí)得良好的守則和設(shè)計(jì)模式。