0

人々はどのようにして複雑な方法を組織化するのでしょうか? つまり、プログラマーは通常、実際には特定のモデルに属さず、代わりに 3 ~ 4 個のモデルと 2 ~ 3 個のスコープを使用して複雑な決定を下すメソッドをどこに配置するのでしょうか?

たとえば、私が現在取り組んでいるアプリの中心は次のスクリプトです。

@items_to_post = Item.where(calendar_id: Ad.ready_to_post.collect(&:calendar_id).uniq).not_posted_yet(ad)
if @items_to_post.renewable.count > 0
  @output = "Please Renew First"
else
  @first_item = @items_to_post.first
  @post = Post.new(title: @first_item.randomizations.first.title, body: @first_item.description, ... )
  ...
end

コード全体で退屈させたくないだけです。コードは非常に長く、わずかな違いで 2 つの場所で呼び出す必要があります。

これは、MVC の規則に違反しているため、特に Controller にとっては醜いですが、どうすればよいかわかりません。

皆さんは通常、このようなメソッドをどこに配置しますか?

4

1 に答える 1

0

単一責任の原則 : 各ジョブを、そのジョブを実行するために必要なことだけを知っている (依存関係を取得する) 個別のクラスに与えます。これらの責任を小さくすると、各クラスの依存関係の数が少なくなり、クラスが単純になります。コード全体がより複雑になるかもしれませんが、一度にすべてを見る必要がないので問題ありません。

実際にもっと多くのコードを投稿すると、別のクラスに分割できるいくつかの責任を人々が提案できるかもしれません。

于 2013-09-11T11:50:28.547 に答える