推薦一招:使用“無副作用函數(shù)”改良代碼

說明


無副作用函數(shù),是指那些不使用類的成員,不使用全局變量變化的函數(shù)。

在進(jìn)行代碼重構(gòu)時(shí),因?yàn)椋?/p>

--可讀性:屏蔽一些信息(例如細(xì)節(jié)實(shí)現(xiàn)或概念封裝),來提高可讀性

--降低圈復(fù)雜度:為了代碼復(fù)雜度,抽取的一些函數(shù)

等改良性設(shè)計(jì),而抽取了不少功能比較簡(jiǎn)單的函數(shù)。如果對(duì)這些函數(shù)進(jìn)行改造,便可形成無副作用的函數(shù)。無副作用的函數(shù),不歸屬于某個(gè)類,可以單獨(dú)cpp中實(shí)現(xiàn)。注意的一點(diǎn)是實(shí)現(xiàn)必須放在引用的前面。

好處是很明顯的:由于不修改頭文件,不會(huì)因?yàn)橹貥?gòu)來修改類的定義(甚至使類附加很多額外信息,使類功能腐化),從影響外部使用(即使是私有函數(shù),外部也需要重新編譯);提取的無副作用函數(shù)方便TDD單元測(cè)試,避免霰彈式修改,無法進(jìn)行單元測(cè)試?yán)Ь?b>。

舉例

使用無副作用函數(shù)改良代碼,只需要修改cpp,無需修改頭文件。如下例子:

修改前代碼
修改后代碼

小結(jié)


在維護(hù)已經(jīng)存在大量代碼的系統(tǒng)時(shí),可以通過提取副作用函數(shù)的思路,來改良代碼。不僅可以顯露系統(tǒng)主干,便于理解系統(tǒng)代碼;另外提取函數(shù)很容易進(jìn)行單元測(cè)試,從而保證重構(gòu)的質(zhì)量。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容