不可思議,竟然可以自動化的刪除無用的代碼
【公眾號回復(fù) “1024”,免費(fèi)領(lǐng)取程序員賺錢實(shí)操經(jīng)驗(yàn)】

大家好,我是你們的章魚貓。
大家平常寫代碼過程中最怕什么?反正我最怕的就是一段代碼實(shí)際沒有在使用,但是還安靜的躺在那里。在某個月黑風(fēng)高的夜晚,它又突然很巧合的干了點(diǎn)活,導(dǎo)致你又得收拾殘局。這種感覺尤其是在接手其他同學(xué)或者團(tuán)隊(duì)的項(xiàng)目的時候,更為明顯。所以,我但凡看到有不用的代碼,我就會在第一時間刪除,避免后面造成影響后患無窮。
今天要推薦的項(xiàng)目,能夠做到自動的去刪除無用的代碼,雖然它需要結(jié)合功能開關(guān)(Flag)來判斷,還沒有那么的智能。但是這個想法還是非常的棒,它讓我們在代碼里面使用功能開關(guān)的時候,沒有后顧之憂了。
在開始介紹項(xiàng)目之前,有必要先介紹一下什么是功能開關(guān)。
功能開關(guān)是一個輕量級的動態(tài)配置框架,通過功能開關(guān)可以動態(tài)管理代碼中的配置項(xiàng),根據(jù)需求為某個應(yīng)用開啟或關(guān)閉部分功能,或設(shè)置某個性能指標(biāo)的閾值。通常用于設(shè)置黑白名單、運(yùn)行時動態(tài)調(diào)整日志級別、降級業(yè)務(wù)功能等場景。
大概的流程如下圖(圖片來自網(wǎng)絡(luò))。

所以如果當(dāng) flag 永遠(yuǎn)為 true 時,else 中的代碼實(shí)際已經(jīng)不再需要了(當(dāng)然 if 判斷也不需要了)。但是這樣的清理操作往往很多同學(xué)不會及時的去做,這樣對于經(jīng)常使用功能開關(guān)的項(xiàng)目來說,長期會存在很多這樣的廢棄代碼,增加了代碼的整體復(fù)雜度,有時可能會觸發(fā)某些 bug。
今天要推薦的工具 Piranha,它是由 Uber 開源,是一個能夠自動去重構(gòu)這些已經(jīng)失效的功能開關(guān)代碼。簡單來說,你只需要給 Piranha 工具傳遞 flag 的名字及行為,它就會自動將代碼重構(gòu)到符合預(yù)期行為的樣子。目前已經(jīng)支持了四種編程語言:Java、JavaScript、Objective-C 和 Swift。
除了直接使用,也可以將 Piranha 集成到開發(fā)流水線,實(shí)現(xiàn)自動化的代碼刪除 diff 和 Pull Request 的流程。

更多項(xiàng)目詳情請查看如下鏈接。
開源項(xiàng)目地址:https://github.com/uber/piranha
---特別推薦---
特別推薦:一個新的優(yōu)質(zhì)的推薦高效工具,軟件,插件的公眾號,每天給大家分享優(yōu)秀的效率工具,「程序員掘金」,專門為程序員挖掘好東西的一個公眾號,非常值得大家關(guān)注。
