写一个长案例陈述的简短方法

时间:2016-07-05 23:03:00

标签: ruby case-statement

我有一个非常长的案例陈述:

def gather_intel
  case OPTIONS[:type]
    when /osha/
      FORMAT.info('Creating OSHA Regional email..')
      EMAILS.osha_reg
    when /pend/
      FORMAT.info('Creating 6 day hold pending email..')
      EMAILS.pend
    when /60/
      FORMAT.info('Creating 60 day hold account deletion email..')
      EMAILS.sixty_day
    when /generic/
      FORMAT.info('Creating generic email..')
      EMAILS.generic
    when /resolve/
      FORMAT.info('Creating resolution ticket..')
      EMAILS.resolve
    when /esc/
      FORMAT.info('Creating escalation ticket..')
      EMAILS.assign
    when /pii/
      FORMAT.info('Creating request to remove personal info..')
      EMAILS.remove_pii
    when /vip/
      FORMAT.info('Creating VIP user email..')
      EMAILS.vip_user
    when /inop/
      FORMAT.info('Creating INOP user email..')
      EMAILS.in_op_user
    when /dev/
      if OPTIONS[:type].to_s.include?('dev=unlock')
        message = 'unlock'
      else
        message = 'password reset'
      end
      FORMAT.info("Creating dev account #{message} email")
      EMAILS.dev_account(OPTIONS[:type])
    else
      raise ERROR
  end
end

case statement有效但由于项目的敏感性和材料,我无法向您展示其余代码。我的问题是,是否有更简单易读的方式来编写此case statement,或者更简单的方式来编写它?

1 个答案:

答案 0 :(得分:3)

我不了解问题的一些细节,但这是您可能采取的一般方法。我假设Min和下面哈希中:info的值是方法的名称。 (我理解这个假设是不正确的。)考虑到我无法测试它,以下内容可能会有错误。

:email