特性切换

✍ dations ◷ 2025-06-07 19:00:57 #计算机编程,软件工程

特性切换或称功能切换,英语:feature toggle、feature switch、feature flag、feature flipper或conditional feature等。它是软件开发中的一种技术,是替代维护多个源代码分支(也称特性分支)的一种方案,这使特性在完成并正式发布前也可以得到测试。特性切换是在运行期间隐藏、启用或禁用特定功能。例如在开发过程中,开发人员可以启用功能以进行测试,而其他用户不会被启用该功能和受到它的影响。

持续发布和持续交付为开发人员提供了有关其代码的快速反馈,而这要求尽早地集成其代码更改。特性分支为此过程引入了一个旁路。特性切换是实现持续交付的一项重要技术。

这种技术使开发人员得以发布包含未完成功能的产品版本。这些未完成的功能被隐藏或被禁用,因此不会出现在用户界面中。这使软件可以发布很多次小的增量版本,而无需承担不断分支与合并的成本。特性切换使软件集成的周期得以更短。项目团队可以使用特性切换来加速开发过程,因为产品中可以包含默认不启用的未完成代码。

特征切换在本质上是条件语句中使用的变量。因此,这些条件语句中的块可以根据特征切换的值切换为开或关。切换为关的代码块类似于被注释的代码。这是开发人员可以绕过它们软件中的某些流程,例如尚未准备好部署的功能。

功能切换的主要用途是避免在发布前的最后一刻因软件合并而产生的冲突。尽管这可能导致切换负债。切换负债是指一个功能已被永久关闭后,软件中仍存留着死亡的代码,并可能带来一些开销。这种代码必须被仔细甄别才能删除,以免干扰到其他代码。

功能切换主要有两种类型。一种是开发人员在产品发布之前决定保留或删除的发布切换(取决于其效果)。另一种是业务切换,它相较于旧的代码是满足不同的用法。

特性切换可用于以下情况:

特性切换可以存储在:

功能组由一组可切换的互相配合的功能组成。这使开发人员可以轻松管理一系列相关的切换开关。

特性标志的另一个好处是Canary发布。Canary发布(或Canary启动或Canary部署)允许开发人员逐步为一小群用户测试某项功能。如果功能的性能不令人满意,则可以回滚它,没有任何不利影响。

虽然在大多数编程语言(例如Java、Angular JS、PHP、JavaScript等)中可以轻松实现这种模式,也存在一些函数库来进一步简化这种用法。

马丁·福勒指出,功能切换应该是你将功能投入生产时的最后一种选择。取而代之,最好将功能分解成更小的部分,将每个部分安全地实现来引入到产品发布,从而避免导致问题。

许多大型网站都使用特性切换技术,包括Flickr、Disqus、Etsy、reddit、Gmail和Netflix。

有许多适用于各种编程语言和平台的开源的特性切换和特性标记解决方案。

相关

  • 叙利亚面积以下资讯是以2019年估计国家领袖国内生产总值(购买力平价) 以下资讯是以2016年估计国内生产总值(国际汇率) 以下资讯是以2015年估计人类发展指数 以下资讯是以2018年估计立
  • 向光性向光性(英语:phototropism)是向性的一种,指生物的生长由光源的方向而影响的性质,常见于植物之中。朝向有光的一面生长称为正向光性,反之称为负向光性。大部分植物的茎部都是正向光
  • 嗜肝DNA病毒科嗜肝DNA病毒的传播指嗜肝DNA病毒科的病毒在其自然宿主人,猿,鸟之间的传播,包括在种间与种内的传播。Hepadnaviridae,又称肝去氧核糖核酸病毒科、肝病毒科,主要在脊椎动物中出现,并
  • 金属互化物金属互化物(intermetallic compound)或金属间化合物是一个被用来表示一种特殊情况的术语。指的是固体相涉及金属,以及一种完全不同的配位化学,它被用来解释由两种或两种以上金属
  • 次异名异名(英语:synonyms)或称同物异名,在生物分类学上,是表示用来指称同一分类单元(taxon)的不同命名,此用词在动物学与植物学上的用法不甚相同。在动物命名上,异名是指用来表示同一个分
  • i style=color: #48A3B5;苏禄海苏禄海(Sulu Sea),位于西南太平洋的一个海域,周围被菲律宾的苏禄群岛、巴拉望岛、棉兰老岛以及马来西亚的沙巴地区围绕,连接南海和苏拉威西海。该片海域是海龟的繁殖场所,盛产海龟
  • 沁园街道沁园街道,是中华人民共和国河南省济源市下辖的一个乡镇级行政单位。沁园街道下辖以下地区:东马蓬社区、西留村社区、东留村社区、屯军头社区、南夫人头社区、东夫人头社区、御
  • 克拉克·阿裨尔克拉克·阿裨尔(Clarke Abel,1789年-1826年11月24日),英国外科医生与博物学家。阿裨尔1816年至1817年间作为使团医师与博物学家跟随阿美士德勋爵前往中国。在中国期间,他收集了后
  • 理察和莫里斯·麦当劳兄弟理察·詹姆士·麦当劳(英语:Richard James McDonald)和莫里斯·詹姆士·麦当劳 (英语:Maurice James McDonald),简称麦当劳兄弟(McDonald brothers),是世界首家及最大连锁速食企业麦当
  • 斑纹刺盖鱼斑纹刺盖鱼,俗名半月神仙,为辐鳍鱼纲鲈形目鲈亚目盖刺鱼科的其中一个种。本鱼分布于西印度洋区,包括红海、东非、南非、马达加斯加、塞舌尔群岛、波斯湾、阿曼湾等海域。水深4