0

いくつかのコードをリファクタリングしていて、次のようなものを見つけました

編集

設定は、データベースに保存されているハッシュです。データベースに格納された key-> value 構造を想像してみてください。アクセスできない場合は、例外が生成されます

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 に答える