首页 > 解决方案 > 使用具有非二进制值的功能标志是否是一种好习惯,尤其是在所有值互斥的情况下?

问题描述

功能标志在有选择地启用/禁用应用程序中的功能方面起着至关重要的作用。简单的开/关、真/假功能标志很常见且易于使用。然而,这些特征特征标志不必总是采用二进制值。它们可以有多个值 A/B/C,并且代码的行为会根据标志的值而有所不同。

为了处理这种多值特征标志,也许我们可以有一个枚举

FeatureFlagValue {
  A,
  B,
  C
}

在代码中,我们可以进行如下检查:

if (FeatureFlagValue.A.equals(featureFlag)) {
  // implement feature 1
}
if (FeatureFlagValue.B.equals(featureFlag)) {
  // implement feature 2
}
if (FeatureFlagValue.C.equals(featureFlag)) {
  // implement feature 3
}

现在在这种情况下,A、B 和 C 是互斥的,并且所有 3 可以同时为 True 或 False。但是,问题是拥有一个多值特征标志是否是一个好习惯,比如一个具有 3 个值的标志,或者具有 3 个具有二进制真/假值的标志例如更好。

enablefeatureA - True/False
enablefeatureB - True/False
enablefeatureC - True/False

标签: javadeploymentflagsenum-flags

解决方案


推荐阅读