人们如何组织复杂的方法? 我的意思是程序员通常把方法放在不属于任何特定模型的方法上,而是使用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
我只是不想厌倦整个代码 - 它很长,需要在两个地方调用,但差别很小。
我把所有这些都放到我的ExportController上,这很难看,特别是对于Controller,因为它破坏了MVC约定,但我不知道如何处理它。
你们通常会把这样的方法放在哪里?
答案 0 :(得分:0)
单一责任原则:将每个作业分配给一个单独的类,该类只知道(接受依赖性)完成其工作所需的事物。如果你将这些职责做得很小,每个类的依赖项数量就会很少,而且类很简单。它可能会使您的代码整体变得更加复杂,但这没关系,因为您不必一次查看它。
如果您实际发布了更多代码,那么人们可能会建议一些可以拆分为单独类的职责。