帮助中心
功能开关

功能开关,即通过一个开关来控制软件中的一个功能模块是否被发布、展示,一个算法、一行代码是否被采用、运行。

或者,开和关可以分别代表两种状态、两个叶节点。在使用中,通常拥有true和false两个值,true代表开关开启状态,false代表开关关闭状态。

常见用法

1. 开关开启时,向用户展示一个功能模块,关闭时不展示。代码很简单:

if(toggle.isOpen == true){
    showFeatureA();
}

2. 在开关开启时,执行算法版本A,关闭时执行算法版本B

if(toggle.algoV1 == true){
    runAlgoV1();
}
else{
    runAlgoV2();
}

通常,开关会在以下场景中被使用:

  1. 实验性功能,即将一些客户反馈的但不确定粘性和付费意愿的功能需求,以最小的成本开发和向部分兴趣爱好者开放。并在实验过程中迭代,在某个时间点确定加大投入做增长曲线,或将其停止及时止损。
  2. 运营活动交付。有一些功能是配合运营活动实现的,只在一个特殊的时间点开放,结束后立即关闭。
  3. 功能版本控制交付。对于不同的客户,会将不同的功能和版本进行不同的组合交付给客户。使用功能开关,可以在一套代码中通过开关控制模块的展示与运行逻辑,快速的交付一个符合业务要求的版本。
  4. 基于主干开发,避免长周期分支合过多的代码分支,难以维护。即将未完成的代码也合并到主分支,使用开关控制其是否被执行。这是目前的一种很流行的开发方法,因为他可以大幅度提高交付时间,降低交付BUG。
  5. 在生产环境中测试,降低BUG对终端用户的负面影响。使用功能开关取代beta环境,让新的功能特性可以在生产环境中测试后,再发布给公众。
  6. 等等场景。

使用敏捷开关实现功能开关效果

想实现上面的种种,往往可以通过远程配置或远程指令传输的方式实现。而敏捷开关提供了一整套系统,帮助大家实现上面的场景。首先,大家可以使用我们提供的各种语言和框架的SDK(可查询左侧菜单 SDK 下的文章),赋能 toggle.isOpen == true 这类代码更多的执行逻辑:

  • toggle.isOpen的最新值,是true还是false?或是更多的状态值,如 "新版"、"旧版"、"v1"、一个json格式的配置代码。
  • 针对不同的用户,toggle.isOpen的值是不同的。可能对小王是true,但对小李是false。

toggle.isOpen == true拥有什么返回值,可以完全通过敏捷开关提供的控制面板版去控制。

1. 如下图配置所示通过打开、关闭开关,控制新功能"热力图"是否发布给用户。

2. 如下图配置所示,我们希望小王可以下载视频,而小李不能下载视频。即使功能有BUG,也只是对小王有影响(而小王也许正是个QA工程师)。



最后更新于 2022/05/30
未能解决您的问题?请联系
评价此篇文档
有帮助
没帮助

请留下具体问题或建议

能够解决我的问题
我还有其他想说的
本篇目录