特性切换

✍ dations ◷ 2025-11-04 20:06:41 #计算机编程,软件工程

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

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

相关

  • 诗人诗人是创作诗歌的人,属于文学家一类。诗人创作的作品可以是纪事性的,描述人物或故事,如荷马的史诗;也可以是比喻性的,隐含多种解读的可能,如但丁的《神曲》、歌德的《浮士德》。历
  • 国际域名本列表收录已加入DNS根域(英语:DNS root zone)的顶级域名,正式列表请以IANA为准,截止2019年官方列表拥有1530个顶级域名,其中部分已弃用。根据IANA定义:7个通用顶级域早在互联网早
  • 访问互联网权访问互联网权或上网权(right to Internet access),也称为宽带权(right to broadband)、连接自由(freedom to connect),认为所有人必须能够访问互联网,以行使和享受其言论自由、见解自
  • 曾文溪曾文溪位于台湾南部,是全台湾第四长的河流,属于中央管河川。曾文溪发源于嘉义县阿里山乡的东水山。流经台南市楠西区、玉井区、大内区、山上区、善化区、官田区、麻豆区、安定
  • 尼姆罗德群岛尼姆罗德群岛(Nimrod Islands)是由“尼姆罗德”号的船长艾勒贝克(Elibeck)在1828年首次回报的一群岛屿,当他的船从雪梨港出航并在合恩角附近时发现。他们回报该岛位于托尔蒂岛之
  • 智商和全球不平等《智商和全球不平等》(英语:)是一本北爱尔兰阿尔斯特大学心理学名誉教授理查德·林恩和芬兰坦佩雷坦佩雷大学政治学名誉教授塔图·万哈宁(英语:Tatu Vanhanen)于2006年出版的书。
  • 各国钾长石产量列表这是一个2006年的各国钾长石产量列表,主要基于2008年7月 英国地质调查局 的数据。
  • 六三罢工1919年6月3日,北京军阀政府大规模逮捕爱国学生引起了上海等各地工人的爱国大罢工。1919年5月4日由北京学生发起,迅速发展到全国各地的五四爱国运动是一次空前伟大的反帝反封建
  • 塞尔布里奇塞尔布里奇(英语:Celbridge,爱尔兰语:Cill Droichid)是爱尔兰共和国基尔代尔郡的一座城市。塞尔布里奇位于都柏林以西23公里处,是大都柏林地区城市。赛尔布里奇有人口19,537人,是基
  • 战时标准船战时标准船(戦時標準船)是日本在第二次世界大战时建造的运输船,其角色相等于美国在二战时建造的自由轮。日本在太平洋战争后由于其运输船经常被美国潜艇击沉,尤其到了1943年后情