使用哈希而不是条件有什么缺点?

时间:2018-02-23 18:02:49

标签: ruby-on-rails ruby refactoring

为了使我的代码更具说明性,我喜欢实现的一种模式是替换这样的长条件:

def make_a_decision(value)
  if value == 1
    "One"
  elsif value == 2
    "Two"
  elsif value == 3
    "Three"
  end
end

使用这样的哈希:

def make_a_decision(value)
  { 1 => "One",
    2 => "Two",
    3 => "Three"
  }[value]
end

我喜欢这样做,因为它用一个只需要响应[]的对象替换条件。在我看来,它也更容易阅读,部分原因是哈希的DRY特性。

但是,我没有看到任何其他Rubyist这样做。为什么不呢?

1 个答案:

答案 0 :(得分:1)

  1. 此方法使用更多内存,因为每次调用此方法时它都会创建一个新的哈希实例。
  2. 对我来说,它的可读性低于原始版本。
  3. 很可能此代码将被更改,此更改可能涉及除简单相等之外的其他一些条件。然后,您将不得不重构整个事情以实现更改。
  4. 请记住,DRY并不总是一件好事。考虑在重复数据删除之前更改代码的原因。干掉已经高度重复的东西,但不是过早的。