创建仅供一次使用的辅助方法是否有好处?
Is there a benefit to create a helper method for only one use?
我注意到在 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 方法,并跳过 helper 方法:
def perform(message)
ActionCable.server.broadcast 'room_channel', {
message: ApplicationController.renderer.render(
partial: 'messages/message',
locals: { message: message }
)
}
end
第一个结构比我的有什么好处吗?我只看到毫无意义的抽象。
您写的很好,但是在 ruby 和 rails 中有一些流程需要遵循,您可以自行选择是否遵循。
我们使用助手的原因如下。
- 在应用程序中组织好代码。
- 使用 DRY 概念,这样,如果需要相同的辅助方法,多个方法或操作可以使用。
希望它能明确在 rails 应用程序的 ruby 中使用助手的目的。
感谢和问候
哈伦德
创建辅助方法(或与此相关的任何方法)有两个正当理由:
- 使一段代码可重用
- 让阅读代码的人清楚代码的用途
我认为两者都是有效的。您应该问问自己,创建辅助方法是否会增加应用程序逻辑的清晰度,并使任何人(甚至您)都更容易理解正在发生的事情。如果是这样的话,我认为创建一个只会被使用一次的助手就可以了。
在大型应用程序中,我发现清晰度通常比几行额外的代码更重要。以后甚至可能有人会找到它的其他用途。
我注意到在 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 方法,并跳过 helper 方法:
def perform(message)
ActionCable.server.broadcast 'room_channel', {
message: ApplicationController.renderer.render(
partial: 'messages/message',
locals: { message: message }
)
}
end
第一个结构比我的有什么好处吗?我只看到毫无意义的抽象。
您写的很好,但是在 ruby 和 rails 中有一些流程需要遵循,您可以自行选择是否遵循。
我们使用助手的原因如下。
- 在应用程序中组织好代码。
- 使用 DRY 概念,这样,如果需要相同的辅助方法,多个方法或操作可以使用。
希望它能明确在 rails 应用程序的 ruby 中使用助手的目的。
感谢和问候 哈伦德
创建辅助方法(或与此相关的任何方法)有两个正当理由:
- 使一段代码可重用
- 让阅读代码的人清楚代码的用途
我认为两者都是有效的。您应该问问自己,创建辅助方法是否会增加应用程序逻辑的清晰度,并使任何人(甚至您)都更容易理解正在发生的事情。如果是这样的话,我认为创建一个只会被使用一次的助手就可以了。
在大型应用程序中,我发现清晰度通常比几行额外的代码更重要。以后甚至可能有人会找到它的其他用途。