私たちはアクションで地元のVARへのparamsをキャッシュした場合、それが役立つか、その同じでしょうか?

StackOverflow https://stackoverflow.com/questions/1164472

質問

だから我々は臭いが私たちの一環として、たまにと呼ばれるコードの品質ツールを実行します事業。このツールは、基本的には臭いし、それらを報告するコードを探します。ここでは、我々は「複製」我々は(我々は同じパラメータで二回メソッド呼び出しを行っているか、我々はなどの場合の条件を複製しているかのように)複数回paramsでキーにアクセスしようとするたびに臭い得ることを観察しました。しかし、paramsは右、ちょうどHashのですか?そのキーが複数回アクセスされたときに、他のハッシュが重複匂いを得ることはありません。

これはなぜそうでしょうか?正確に何をparamsていますか?それはそれらを使用し、ローカル変数にparamsをキャッシュする意味がありますか?それが役立つか、その同じでしょうか?またはツールに何か問題はありますか?助けて!

役に立ちましたか?

解決

これは、ビューとコントローラに対して偽陽性を発生させますので、それは、あなただけのアプリ/モデルフォルダに臭いを実行するために最善の現在のバージョンでます。

paramsは、システム境界に近いDTO(データ転送オブジェクト)の一種であり、そのためその特性は、通常のコードとは異なるなければなりません。しかし、臭いはそれを知っている(まだ)ありません。私はそれがRailsのとのより良い果たしているように、近い将来に臭いを改善する計画します。今のところ、しかし、あなたの最善の策は、アプリ/モデル(そしておそらくアプリ/ヘルパーとlib)を見にそれを制限することです。

他のヒント

paramsが@params ||= @request.paramsを行うメソッド呼び出しです。

それは複雑な方法であり、それはあなたが変数に試してみて、キャッシュすることを望んでいる、しかし、からの私のrack_process.rbに基づいて(それはそれがメモ化され、特に以来、それ価値があるだろうと思ういけないparamsは考えているかもしれませんRailsは2.2)

params[:foo]ので臭いが正しい、Hash#[]するメソッド呼び出しです。私は臭いに慣れていないよ、そう他のハッシュアクセスが同じにカウントされませんなぜ私が言うことができません。 Hash#[]はあなたがあなたのコードの非常に性能の重要な部分にしていない限り、ローカル変数に格納する必要がないことを十分に速くする必要があります。

paramsハッシュと定期的なハッシュの唯一の違いは、それはあなたが文字列や記号を任意のキーにアクセスすることができることを意味し、with_indifferent_accessを使用することである。

私はあなたがのparamsを呼び出すたびに、メソッドの呼び出しを生成し、初期化ステップがあると信じて、私はあなたがのparamsを作成し、コール数をチェックしてみてくださいと仮定します。 これは、盲目の推測である可能性があります。 : - )

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top