功能标记是什么?
一文了解它的作用,以及它的最佳实践

来源:Perforce      作者:龙智      发布时间:2022-03-23

功能标记是一种允许开发人员在软件开发生命周期中根据需要启用或关闭功能的技术,该技术开发团队在不改变代码的情况下更改系统行为。如果您打算在开发过程中不断地将功能集成到应用程序中,您可能要考虑使用功能标志。
那么,功能标记有哪些作用,应该如何使用,有哪些最佳实践?功能标记与功能分支应该如何取舍?本文将作出解答。
了解如何利用版本控制系统来跟踪使用功能标志产生的变更代码信息,欢迎咨询DevSecOps解决方案提供商、Perforce授权合作伙伴——龙智,我们专注于版本控制领域十余年,将帮助您利用Helix Core等解决方案更好地管理代码的可追溯性、加速开发。

通过利用功能标记将代码发布与代码部署分离开来。您可以通过功能标记来选择用户,在需要的时候还可以关闭该功能,并通过开展A/B测试以确定未来的产品方向。那么,什么是功能标记?

什么是功能标记?

功能标记是一种允许开发人员在软件开发生命周期中根据需要启用或关闭功能的技术。该技术允许开发团队在不变更相应代码信息的情况下更改系统行为。

功能标记是确定某些逻辑是否可用的一项前提条件。这些条件可以通过启用或关闭标记功能来实现,启用标记意味着该功能可用,关闭标记则表示绕过某些逻辑。功能标记也被称之为功能控件、功能切换和功能开关。

为什么使用功能标记?

功能标记为开发团队提供了对测试和用户的额外控制,从而加快代码部署周期。功能标记的一些使用案例主要包括以下几个方面:

简化的分支策略

功能标记和基于主干的开发往往是相辅相成的,因为不同的开发人员可在同一个分支上开发不同的功能,并通过启用或关闭特定功能来避免出现冲突的变更。这种简化的分支策略可有效避免以下情况发生,即个别开发人员在独立的分支中工作,并且没有足够频繁地集成他们的更改,从而可能导致不必要的代码发布延迟。它还允许您持续交付代码,因为开发团队可以轻松关闭不完善的功能,直至功能完善为止。

持续部署

通过使用功能标记,开发团队可以使用安全的方式更快捷地为用户部署软件。功能标记是持续部署流程的关键组件。代码发布与代码部署是分开进行的,也就是说,代码可以逐步进行发布,如果发现缺陷就立即关闭功能标记,修复后再重新启用,从而确保不会影响代码部署周期。

降低风险

因为功能缺陷造成问题?仅需关闭功能标记即可。这在测试期间很有帮助,必要时,您可以通过快速关闭功能标记来减少该类问题所造成的影响。因为系统性能造成问题?只需在一段时间内关闭不太重要的功能,直到该系统性能问题得到解决。担心如何接收新功能或修改过的功能?只需为一小部分用户提供此类功能,并征求他们的反馈意见。

功能标志的最佳实践

与任何其它形式的软件开发一样,您希望遵循最佳实践来确保拥有无缺陷的干净代码。这可能意味着在基于主干的开发模式中使用功能标记,或者需要在基于分支的开发模式中使用功能标记,或者在基于主干的开发模式和基于分支的开发模式中均使用功能标记。

以下是一些常用的功能标记最佳实践:

建立命名规则

通过为您的标记制定标准化的命名规则来防止混淆情况发生,从而减少切换错误标记的机会,确保更好的版本控制和可追溯性。

清理未使用标记

创建一个标记很容易,但在实际操作中却很容易将其忽略。如果已经创建标记,或者不再需要某类标记,则必须停用该类标记,从而减少代码库标记信息冗余,达到简化标记管理的目的。

用户监控

功能标记的一项优势在于非技术团队成员也可以对其进行访问。例如,产品开发团队可以协助进行A/B测试。尽管如此,对有权访问的人员及其访问内容进行控制依旧非常重要。您需要考虑在生产环境中锁定更改,以及对记录功能标记变更信息的日志进行维护。

不要滥用功能标记

功能标记在某些情况下是有用的,但不是万能的。功能标记最适合那些可以从代码中的少数几个点进行控制的特性。其他用例,比如重构,则很难通过功能标记进行控制。在这些情况下,需要考虑使用功能分支。

功能标记和功能分支

功能分支允许多个开发人员在其独立分支中独自处理更改。开发人员处理较小的代码块,在独立的分支中进行测试,然后将最终整合的信息存储在主代码库中。

功能标记和功能分支各有利弊。功能标志虽然适合分段测试,但如果它们被滥用以及未进行良好的文档记录,或者在不被需要时未停用它们,就会导致代码无序情况发生。

在功能分支中,如果整合不够频繁,则会出现问题。当主代码库的发展速度快于功能分支时,未整合到主代码库中的功能分支可能会导致大量冲突性代码问题发生。然而,功能分支对于大型项目来说是理想的,它允许开发人员在与团队其他成员隔离的情况下专注于小范围的代码变更。它还允许对进入代码库的代码进行更严格的控制,即如果没有明智地使用标记,这可能会成为功能标记的问题。

功能标记和功能分支可以结合使用,用于隔离测试并保持对版本的控制。通过有效整合短期分支的选项,二者结合使用可降低主代码库中代码缺陷的发生风险。

管理版本控制系统中的代码变更

无论您的团队使用功能标记、功能分支抑或是两者组合,您均需要一个版本控制系统来跟踪变更代码信息。有了Perforce的版本控制系统工具Helix Core,软件分支最佳实践已经内建。通过使用Perforce Streams,您可以实施借助功能强大的工作流来指导开发工作。您还可以在获得更高质量代码的同时保持高效的开发速度。联系Perforce授权合作伙伴——龙智免费试用Perforce Helix Core,帮助您管理代码的可追溯性并加速开发。

文章来源:https://bit.ly/3Mg4QnW