java - 使用具有非二进制值的功能标志是否是一种好习惯,尤其是在所有值互斥的情况下?
问题描述
功能标志在有选择地启用/禁用应用程序中的功能方面起着至关重要的作用。简单的开/关、真/假功能标志很常见且易于使用。然而,这些特征特征标志不必总是采用二进制值。它们可以有多个值 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
解决方案
推荐阅读
- reactjs - 在功能组件的函数内反应redux值返回一个周期后的值
- angular - 将高光设置为范围滑块
- python - 我可以使用来自另一个函数的输入信息作为 Python 中的返回类型吗?
- python - 无法从模板中的数据表中的所有分页发送复选框数据以在 django 中查看
- .net-core - HTTP 错误 403.14 - 禁止 kentico 管理
- azure-devops - Azure Devops 中跨越多个 sprint 的功能
- javascript - 如何在javascript中比较数字
- python - 使用 pymongo 客户端从 MongoDB 向 Pandas 读取数据时出现 OOM
- python-3.x - 使用 Pandas 的复杂组
- amazon-web-services - DynamoDB 在按需模式下消耗的容量单位是否与预置容量相比?