特性切换

✍ dations ◷ 2025-04-04 07:28:13 #计算机编程,软件工程

特性切换或称功能切换,英语: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。

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

相关

  • 屯溪屯溪区是中国安徽省黄山市下辖的一个区。东汉建安十三年(208年),吴主孙权在屯溪设犁阳县,属新都郡,为屯溪建制之始。晋改犁阳为黎阳。南朝宋大明八年(464年)撤黎阳县,并入海宁县(今
  • 噻替哌噻替哌(英语:ThioTEPA或thiotepa,又名塞替派、硫涕巴),化学全称N,N',N''-三亚乙基硫代磷酰胺,是一种用来治疗癌症的烷化剂。噻替哌是一种有机磷化合物,分子式为SP(NC2H4)3。 它是N,
  • 濒危濒危物种(英语:endangered species,简称EN)是指很可能会绝灭的物种。国际自然保护联盟(IUCN)的濒危物种红色名录就列出了许多濒危物种,这些是在国际自然保护联盟架构下,野生物种中第
  • 大韩民国政府外交 · 南北统一 · 阳光政策 · 行政区划 · 人权(朝鲜语:대한민국의 인권)政治主题大韩民国的中央行政机关(韩语:중앙행정기관),是指总统所领导的政府部门,并由国务总理统筹
  • 武义县武义县是中国浙江省金华市下辖的一个县,素有“温泉之城、萤石之乡”的美称。春秋时期属越国,战国后期属楚国。秦朝至东汉属乌伤县,三国至隋属永康县。武周天授二年(691年),始设武
  • 私人物品私人物品(英文:private good)是经济学中商品的一种分类,相对于私人物品,从需求方面的观点上,具有“竞争性”(或称“独享性”、“竞用性”、“敌对性”、);从供给方面的观点上,具有“排
  • 八木蛛属见内文八木蛛属(学名:)是东亚蝇虎科的一个属,由F. R. Wanless于1984年描述。本属的学名得名于日本蛛形动物学学家八木沼健夫,他在1967年描述本属首个物种。截至2019年9月 (2019-
  • 山黄皮属山黄皮属(学名:)是茜草科下的一个属,为乔木或灌木植物。该属共有约230种,分布于热带地区。
  • IDLEIDLE可以指:
  • 冰川锅穴冰川锅穴,又称冰臼(英语:Moulin,起源于法语Mill ),是一种冰川特有的现象。它的形成犹如古语中的“水滴石穿”:冰川表面融化的水沿着冰川裂隙向下流动而缓慢形成深坑。由于冰层的巨