2

私は、人々がクイズを受けることができるRailsアプリケーションをやっています。BrowserGameコントローラーのロジック (セッション、リダイレクトなど) を処理するモデルがあります。現在、これは私の#initialize方法です:

class BrowserGame
  def initialize(controller)
    @controller = controller
  end
end

そしてコントローラーにはメソッドがあります

class GamesController < ApplicationController

  # actions

  private

  def browser_game
    BrowserGame.new(self)
  end
end

ご覧のとおり、コントローラー全体を に渡していBrowserGame#initializeます (セッションなどで操作できるようにするため)。これは良い考えですか?コントローラー インスタンスは大きなオブジェクトであるため、副作用はありますか?

4

2 に答える 2

6

はい、大きなオブジェクトをメソッド パラメーターとして渡すことは問題ありません。オブジェクトをスタックに配置するのではなく、オブジェクトへのポインターを配置するだけです。副作用に関する限り@controller、内部から行うことBrowserGameはすべて、コントローラーへの他の参照を通じて見られますが、それはおそらく既に期待していることです。

于 2012-08-18T09:07:02.233 に答える
0

大きなオブジェクトを渡しても問題ありません。

ダルシャンが言うように、それはただのポインターです。

プロセス/スレッドを分岐している場合、またはバックグラウンドで実行する遅延ジョブを作成しようとしている場合は、シリアル化可能なオブジェクトのみを渡すことをお勧めします。

于 2012-08-18T09:12:21.293 に答える