开始使用功能标志

在代码中,特性标志(Feature Flag)不过就是一个 if 语句。假设你当前有一个实现新用户注册对话框的函数:

function showRegisterDialog(){
  // 当前实现
}

现在,你想使用特性标志创建一个新的对话框,并能够在运行时切换到新的对话框:

function showRegisterDialog(){
  var newRegisterDialog = false;
  if( newRegisterDialog ){
    return showNewRegisterDialog();
  }else{
    return showOldRegisterDialog();
  }
}

function showNewRegisterDialog(){
  // 新的实现
}

function showOldRegisterDialog(){
  // 旧的实现
}

为了动态启用或禁用该功能,你需要将特性标志的验证提取到一个独立的函数中:

function showRegisterDialog(){
  if( featureIsEnabled("new-register-user-dialog") ){
    return showNewRegisterDialog();
  }else{
    return showOldRegisterDialog();
  }
}

特性标志的配置可以存储在多个位置:

  • 系统配置

  • 用户配置

  • 应用程序数据库

  • 独立的数据库

  • 通过 API 访问的独立系统

具体选择哪个位置存储配置,取决于你的用例,某些位置可能更适合,某些位置则可能不合适。