0

我正在重构一些代码,我发现了类似的东西

编辑

设置是存储在我的数据库中的哈希。因此,想象一下存储在数据库中的键-> 值结构化。所以如果它不可访问,它会产生一个异常

def MyClass

 def my_method(foo = Settings[:foobar]
   foo
 end

 def your_method
   my_method
 end

结尾

我认为它不安全,因为没有检查 Settings[:foobar] 是否存在。我的问题是:

像这样写会更安全吗:

def MyClass
   def my_method(foo)
     foo unless foo.nil?
   end
   def your_method
       my_var = Settings[:foobar] rescue "default value"
       my_method my_var
   end
end

如果没有,还有其他好的选择吗?

4

1 回答 1

0

如果Settings是哈希,则Settings[:foo]返回nil. foo unless foo.nil?同样的事情也是如此。

另一种方法是使用该||=方法。

def method(foo)
   foo ||= Settings[:foo]
   ...
end

但我看不出有什么理由比你所拥有的更好......

def method(foo)
   foo ||= Settings[:foo] || "my really default default"
   ...
end

...除非您可以在缺少设置的情况下默认设置另一个值,否则您可以执行此类操作。

从头开始……无论如何都不会阻止你这样做……

def method(foo = Settings[:foo])
   foo ||= "my really default default"
   ...
end

希望这在一些小的方面有所帮助。

于 2012-05-23T12:46:59.063 回答