創(chuàng)意歌曲:我是一段死代碼
死代碼就是沒(méi)用的、但卻留在程序庫(kù)中的代碼。這樣的代碼沒(méi)有任何其它程序會(huì)調(diào)用它,沒(méi)有任何函數(shù)、對(duì)象引用它。它就在程序中,但程序的運(yùn)行狀態(tài)跟它一點(diǎn)關(guān)系都沒(méi)有。
為什么程序中會(huì)有死代碼?有可能是程序庫(kù)升級(jí),老的接口不再使用。有可能是需求調(diào)整,但跟過(guò)時(shí)的需求相關(guān)的代碼沒(méi)有被刪除。有可能是拷貝粘貼的過(guò)程中,有些沒(méi)有用的函數(shù)也粘貼了過(guò)來(lái)。有可能是重構(gòu)的過(guò)程中,把老代碼保留下來(lái)備份用。等等…..
死代碼是應(yīng)該刪除的代碼。沒(méi)有用的代碼也就是沒(méi)有人維護(hù)的代碼。***將變成沒(méi)有人知道它是有什么用處的代碼。后來(lái)的人也開(kāi)始不敢刪除這樣的代碼,怕萬(wàn)一什么地方需要用到它。于是這樣的死代碼積累的越來(lái)越多。技術(shù)債務(wù)越來(lái)越重。健康的項(xiàng)目慢慢腐爛變質(zhì)。最終沒(méi)有人能維護(hù)。
死代碼應(yīng)該及時(shí)大膽清除。很多程序員會(huì)擔(dān)心,萬(wàn)一這段代碼還有用呢?沒(méi)錯(cuò)。因?yàn)槟悴皇煜み@些代碼,很多人修改過(guò)這些代碼,沒(méi)準(zhǔn)什么地方還在用這段代碼。但是,我們有代碼保護(hù)工具:代碼版本控制系統(tǒng)——git,svn等。即使是誤刪了代碼,也能從歷史記錄里恢復(fù)。
最重要的,我們還有自動(dòng)化測(cè)試。自動(dòng)化測(cè)試是保證程序正確的最可靠的保證。無(wú)論做什么修改,添加功能,刪除功能,最終都要運(yùn)行自動(dòng)化測(cè)試,讓所有的測(cè)試點(diǎn)都綠燈通過(guò)。如果你還在擔(dān)心害怕刪除死代碼,很可能是因?yàn)槟愕捻?xiàng)目沒(méi)有自動(dòng)化測(cè)試。
死代碼,如果你不刪,它會(huì)很痛苦,因?yàn)闊o(wú)人問(wèn)津它,無(wú)人調(diào)用它。它如同活死人,僵尸。下面這段視頻就是一位網(wǎng)友很形象的唱出了死代碼們的心聲: