不可思议,竟然可以自动化的删除无用的代码

大家好,我是你们的章鱼猫。

大家平常写代码过程中最怕什么?反正我最怕的就是一段代码实际没有在使用,但是还安静的躺在那里。在某个月黑风高的夜晚,它又突然很巧合的干了点活,导致你又得收拾残局。这种感觉尤其是在接手其他同学或者团队的项目的时候,更为明显。所以,我但凡看到有不用的代码,我就会在第一时间删除,避免后面造成影响后患无穷。

今天要推荐的项目,能够做到自动的去删除无用的代码,虽然它需要结合功能开关(Flag)来判断,还没有那么的智能。但是这个想法还是非常的棒,它让我们在代码里面使用功能开关的时候,没有后顾之忧了。

在开始介绍项目之前,有必要先介绍一下什么是功能开关。

功能开关是一个轻量级的动态配置框架,通过功能开关可以动态管理代码中的配置项,根据需求为某个应用开启或关闭部分功能,或设置某个性能指标的阈值。通常用于设置黑白名单、运行时动态调整日志级别、降级业务功能等场景。

大概的流程如下图(图片来自网络)。

600

所以如果当 flag 永远为 true 时,else 中的代码实际已经不再需要了(当然 if 判断也不需要了)。但是这样的清理操作往往很多同学不会及时的去做,这样对于经常使用功能开关的项目来说,长期会存在很多这样的废弃代码,增加了代码的整体复杂度,有时可能会触发某些 bug。

今天要推荐的工具 Piranha,它是由 Uber 开源,是一个能够自动去重构这些已经失效的功能开关代码。简单来说,你只需要给 Piranha 工具传递 flag 的名字及行为,它就会自动将代码重构到符合预期行为的样子。目前已经支持了四种编程语言:Java、JavaScript、Objective-C 和 Swift。

除了直接使用,也可以将 Piranha 集成到开发流水线,实现自动化的代码删除 diff 和 Pull Request 的流程。

img

更多项目详情请查看如下链接。

开源项目地址:https://github.com/uber/piranha


更多精彩请扫码关注如下公众号。

Written on August 9, 2020