モジュール内のメソッドの結果をメモ化する場合、それは悪い習慣と見なされますか?
Railsヘルパーがあると想像してみてください。
module FooHelper
def values_for_thingie
if some_condition && that_other_condition
{ a: "foo", b: "bar" }
else
{ a: "bar", b: "baz" }
end
end
end
Railsビューがこのヘルパーメソッドを複数回呼び出すと仮定しましょう..1つは「a」の値を取得し、もう1つは「b」の値を取得します...some_conditionが何かを行うメソッドであると仮定しましょう非常に複雑なので、それが複数回呼び出されることは望ましくありません...
これは、次の方法で解決できます。
module FooHelper
def values_for_thingie
@values_for_thingie ||= \
if some_condition && that_other_condition
{ a: "foo", b: "bar" }
else
{ a: "bar", b: "baz" }
end
end
end
ただし、このインスタンス変数はFooHelperのインスタンスとは何の関係もないため、これがどのように感じられるかは気になりません。実際にはその制御下にありません。そのため、これは良い解決策ではないようです。