特性切换

✍ dations ◷ 2025-10-12 21:00:05 #计算机编程,软件工程

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

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

相关

  • CD1CD1 (分化簇1)是分布于不同抗原提呈细胞(CPA)表面的一类糖蛋白,在人类,其编码基因位于1号染色体。这类蛋白质分子与MHC1(第一类主要组织相容性复合体)有同源关系,参与将脂质抗原提呈
  • 谢琳卡谢琳卡(1981年-),女,武汉人,武汉“疫情吹哨人”之一,华中科技大学同济医学院博士,华中科技大学同济医学院附属协和医院肿瘤中心主治医师。2019新型冠状病毒疫情爆发,2019年12月30日晚
  • 车闸制动是指一种令交通工具从前进中停止下来的制动系统,透过使车辆车轮的转动减慢来停车。一般来说,都是透过以生铁或复合陶瓷(材料有:碳、二氧化硅或Kevlar纤维等)制成的制动碟,连接
  • XP极限编程(英语:Extreme programming,缩写为XP),是一种软件工程方法学,是敏捷软件开发的一种方式。如同其他敏捷方法学,极限编程和传统方法学的本质不同在于它更强调可适应性而不是
  • 喉塞韵尾声门塞音(注音:ㄕㄥ ㄇㄣˊㄙㄜˋㄧㄣ;英文:Glottal stop)为声门闭塞形成的辅音,亦称“清喉塞音”。它在国际音标中的符号是⟨ʔ⟩,在X-SAMPA中的符号是 ?。声门塞音的特征有:声门
  • 第498号决议朝鲜半岛与联合国 联合国安全理事会第702号决议 (1991年获得成员资格) 联合国安全理事会朝鲜相关决议列表 朝鲜人权状况调查委员会报告 (2014)联合国大会第498号决议是联合
  • 人类聚居地人类聚居地(英语:Human settlement)。以美国地质调查局的定义来看的话,它是一个有人口聚居的地方或地区(视人口普查结果而定),并根据经纬度分析某一范围聚集或散落的建筑物与该地长
  • 1971年-1980年载人航天飞行列表这是一个1971年-1980年的完整载人航天飞行列表,其中包括后间的太阳神计划登陆任务、天空实验室计划及礼炮计划。
  • 斯科特·迈克尔·福斯特斯科特·迈克尔·福斯特(Scott Michael Foster)是美国的一位演员。他出演过的最著名的角色是在ABC家庭台电视剧联谊会中饰演Cappie。他也出演过多部电视剧。目前正演出《追寻
  • 埃尔瓦什埃尔瓦什(Elvas)是葡萄牙的一座城市。人口有18,106人。市区附近的古迹“埃尔瓦什及其防御工事”在2012年6月30日被列入世界遗产。