新しいコントローラ インスタンスをインスタンス化するオーバーヘッドはわずかであり、まったく関係のない 2 つのリクエスト間で状態が誤って共有されることはありません。プロセッサ時間の「節約」は、壊滅的なバグを生み出す可能性によって相殺される以上のものです。
コントローラーはリクエスト固有の状態を保存するためのものであることを思い出してください。@variable
コントローラーを再利用するには、すべてのアクションの開始時に、設定したすべてをリセットする必要があります。そうしないと、次のようなもの@is_admin = true
が設定されてしまい、クリアされない可能性があります。あなたが実際に持ち込むであろう不自然でないバグは、はるかに微妙であり、開発者の時間を浪費するでしょう.
何もないところに最適化が見られます。何かが状態を維持し、リクエスト間でそれをリセットする必要があります。そうしないと、誤って状態が共有されるという悪夢に見舞われます。リクエスト間でコントローラ インスタンスを永続化する場合、状態を維持/リセットするジョブをより低いレベルにプッシュするだけです。その場合でも、リクエストごとに何らかの状態管理クラスの新しいインスタンスをインスタンス化することが答えになる可能性があります。コンピューターはリソースの割り当てと解放に非常に優れているため、ボトルネックであることが実際にわかるまでは心配する必要はありません。この場合、リクエストごとに新しいコントローラーをインスタンス化することは、簡単に正しい選択です。
Rails の場合、使用できること@variable = value
はコードの明快さと使いやすさの観点から大きな利点であり、リクエストが完了したときにコントローラーの各インスタンスを多かれ少なかれ破棄する必要があります。