加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 功能标记最佳实践:方法内部或外部的条件?

发布时间:2020-12-17 02:34:31 所属栏目:百科 来源:网络整理
导读:我们使用功能标志来启用/禁用系统中的某些功能. 我与我的同事讨论了为代码本身添加功能标志的标准方法: 请考虑以下方法: def featured_method do_this do_thatend 从我们代码中的大约15个不同的地方调用该方法. 如果在每次调用此方法之前启用该功能,是否建
我们使用功能标志来启用/禁用系统中的某些功能.

我与我的同事讨论了为代码本身添加功能标志的标准方法:

请考虑以下方法:

def featured_method
  do_this
  do_that
end

从我们代码中的大约15个不同的地方调用该方法.

如果在每次调用此方法之前启用该功能,是否建议添加检查:

if feature_enabled?(:feature_key)
  featured_method
end

或者在features_method本身内部,如下所示:

def featured_method
  if feature_enabled?(:feature_key)
    do_this
    do_that
  end
end

在方法本身内部具有条件的优点是显而易见的:干掉代码,以及当您想要永久添加特征时,只需从方法中删除条件即可.

在每次调用之前具有条件的优点是,在不进入feature_method代码本身的情况下,该方法是否被执行是非常清楚的,这可以节省相当多的麻烦.

我想知道这些问题是否有另一种解决方案或标准.

解决方法

我会合并两种方法.

这将导致呼叫方的DRY代码.它不会违反feature_method中的SRP,它会清楚地传达正在发生的事情 – 如果你能找到一个比我更好的名字:

def may_execute_featured_method
  featured_method if feature_enabled?(:feature_key)
end

def featured_method
  do_this
  do_that
end

调用者将使用may_execute_featured_method

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读