Ruby 使用“Object#send”方法作为最佳实践

Ruby 使用“Object#send”方法作为最佳实践,ruby,ruby-style-guide,Ruby,Ruby Style Guide,很难确定以下代码的用法: [:create, :update, :pause].each { |action| send("to_#{action}") } 这是反模式还有其他原因吗?这不是反模式。这是语言的一部分。出于上述原因,你应该避免这样做,但有时这是唯一的选择。我认为在性能方面没有任何明显的缺点。至于保持面向对象,你应该建议切换到public\u send——这是推荐的方式。这不是一种反模式。这是语言的一部分。出于上述原因,你应该避免这样做,但有时这是唯一的选择。我认为在性能方面没有任

很难确定以下代码的用法:

[:create, :update, :pause].each { |action| send("to_#{action}") }

这是反模式还有其他原因吗?

这不是反模式。这是语言的一部分。出于上述原因,你应该避免这样做,但有时这是唯一的选择。我认为在性能方面没有任何明显的缺点。至于保持面向对象,你应该建议切换到
public\u send
——这是推荐的方式。

这不是一种反模式。这是语言的一部分。出于上述原因,你应该避免这样做,但有时这是唯一的选择。我认为在性能方面没有任何明显的缺点。至于保持面向对象,你应该建议切换到
public\u send
——这是推荐的方式。

有理由使用这个,也有理由避免它。这个简单的例子是一个反模式的例子,因为它是一个固定的数组,所以更简洁地写:

create
update
pause
当阵列不一定是静态的,可能会有修改,特别是在DSL上下文中使用时,才有理由使用它

Rails将此应用于
before\u validation
处理程序链,例如,它有一个要调用的符号引用或Proc函数列表:

before_validation :check_sanity
before_validation lambda { do_something(1) }

有理由使用它,也有理由避免它。这个简单的例子是一个反模式的例子,因为它是一个固定的数组,所以更简洁地写:

create
update
pause
当阵列不一定是静态的,可能会有修改,特别是在DSL上下文中使用时,才有理由使用它

Rails将此应用于
before\u validation
处理程序链,例如,它有一个要调用的符号引用或Proc函数列表:

before_validation :check_sanity
before_validation lambda { do_something(1) }

我认为OP的观点是,这种模式倾向于在不必要的地方使用,不适当的使用是一种反模式。我同意他的观点。我认为OP的观点是,这种模式倾向于在不必要的地方使用,不恰当的使用是一种反模式。我同意他的看法。