为一次使用创建辅助方法有什么好处吗?

时间:2017-10-30 18:44:21

标签: ruby-on-rails helpermethods

我注意到在Rails教程中,作者有时会制作仅使用一次的辅助方法。这让我感到很荒谬,但在学习ActionCable时,我注意到DHH在2年前的ActionCable介绍中做了同样的事情。所以也许有一点我失踪了。仅举例说明,这是DHH的代码。

# app/jobs/message_broadcast_job.rb
class MessageBroadcastJob < ApplicationJob
  queue_as :default

  def perform(message)
    ActionCable.server.broadcast 'room_channel', message: render_message(message)
  end

  private
    def render_message(message)
      ApplicationController.renderer.render(partial: 'messages/message', locals: { message: message })
    end
end

现在我只想编写类似这样的perform方法,并跳过辅助方法:

def perform(message)
  ActionCable.server.broadcast 'room_channel', { 
    message: ApplicationController.renderer.render(
      partial: 'messages/message', 
      locals: { message: message }
    )
  }
end

对我的第一个结构有什么好处吗?我只看到一个毫无意义的抽象。

2 个答案:

答案 0 :(得分:1)

你所写的内容很好,但在轨道上的红宝石中有一些过程可以跟随&amp;它是你自己选择跟随与否。

我们使用助手有以下原因。

  1. 在应用程序中很好地组织代码。
  2. 使用DRY概念,以便在需要多个方法或操作时可以使用相同的辅助方法。
  3. 希望明确在rails应用程序中使用ruby中的帮助程序的目的。

    谢谢&amp;问候 哈伦德

答案 1 :(得分:0)

创建辅助方法(或任何方法)有两个正当理由:

  1. 使一段代码可重复使用
  2. 为了让阅读它的人清楚地了解代码的目的
  3. 我认为两者都是有效的。您应该问问自己,创建辅助方法是否会增加应用程序逻辑的清晰度,并使任何人(甚至您)更容易理解正在发生的事情。如果是这种情况,我认为创建一个只能使用一次的助手是很好的。

    在大型应用程序中,我发现清晰度通常比一些额外的代码行更重要。有人甚至可能会在以后找到它的另一种用途。