特性切换

✍ dations ◷ 2025-12-01 18:57:04 #计算机编程,软件工程

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

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

相关

  • 二硫键二硫键在化学上是一条从结合硫醇而衍生的单共价键。它又称为二硫键或双硫桥,大部分用于生物化学的范畴。其正式名称应为过硫化物,但却甚少使用。与过氧化物(R-O-O-R)相似,它的整
  • 非言语交际非言语交际(英语:Nonverbal communication)或译非语文沟通,是社会心理学中的概念,指人在传达讯息时,会使用语言、文字以外的媒介,例如脸部表情、肢体语言或音调等,来辅助说明语文的
  • 自杀性爆炸自杀攻击或称自杀式袭击、人肉炸弹,是一种将自杀扩大为伤害自己及目标者的行为,现代的自杀式攻击通常是由自杀者在身上绑好炸弹,走到目标地,或是以装满炸弹的车冲撞特定目标然后
  • 重名重名(英语:Tautonym)是指物种学名的两个字都一样,例如美洲野牛 Bison bison、西部大猩猩 Gorilla gorilla 、喜鹊 Pica pica、鹌鹑 Coturnix coturnix、黄嘴天鹅 Cygnus cygnus
  • 斗山熊斗山熊队(韩语:두산 베어스、英语:Doosan Bears),是KBO联赛的球队之一,母企业是世界前500大集团的斗山集团,成立于1982年,为韩国职棒的创始六球团之一,前身为同样属于斗山集团的子公
  • 雅芳河雅芳河(英语:River Avon),又译埃文河、艾芬河,源于英格兰格洛斯特郡南格洛斯特奇平索德伯里(Chipping Sodbury),流经威尔特郡。为了区别同名河流,此河又称“下雅芳河”或“布里斯托尔
  • 卡洛斯·弗伦克卡洛斯·西尔维斯特雷·弗伦克,CBE,FRS (英语:Carlos Silvestre Frenk,1951年10月27日-),英国理论宇宙学家,生于墨西哥,杜伦大学奥格登基础物理学研究中心(英语:Ogden Centre for Fundam
  • 蓬莱韦克奶酪蓬莱韦克干酪(Pont-l'Évêque)产自法国的诺曼底卡尔瓦多斯省的蓬莱韦克。蓬莱韦克干酪有着淡棕黄色的外壳,因成熟过程中经常以盐水洗刷外壳,令外壳留有阵阵的辛辣味,浓郁非常,干
  • 冈松参太郎冈松 叁太郎(日语:岡松参太郎/おかまつ さんたろう 、1871年9月23日-1921年12月15日;参(日语)/叁/sān(三),同“冈松三太郎”)为日本法学者(専攻民法学)。京都帝国大学法科大学(现在
  • 阳离子聚合反应阳离子聚合反应为一种链增长聚合反应,反应中阳离子引发剂(cationic initiator)会将电荷转移单体,使单体变得有反应性。而这个具反应性单体会与其他单体进行相似的反应,最后形成