<分区>
编辑:此问题已被标记为与有关私有(private)方法用途的更通用的 OO 问题的重复。这个问题专门针对 Controller ;我想知道除了经典的 OO“不要公开任何不需要公开的方法”之外是否还有其他原因。
有许多资源警告说,非 Action Controller 方法应该保持private
,以避免这些方法被路由到的可能性。我的问题是关于该警告背后的原因。
我的理解是 routes.rb
文件是可能路由的白名单,那么如果 Controller 有公共(public)方法(只要它们不在 routes.rb
文件)?将这些方法设为私有(private)只是为了防止 future 我/开发人员错误地添加包含这些方法的路由的额外保护层吗?公共(public) Controller 方法是否有其他一些偷偷摸摸的方式可以进入路由?
This book section警告 Controller 的公共(public)方法默认情况下可以通过某些 URL 访问。对吗?
This answer解释说保持 Controller 方法私有(private)可以防止任何请求被路由到它,但这不是已经被 routes
处理了吗?
The Rails Guide提到最好降低不应作为操作的 Controller 方法的可见性。
The Thoughtbot Rails style guide甚至不接受公共(public) Controller 方法的概念,并说要使用 private
而不是 protected
。
这里显然有社区共识。这些建议背后的原因是什么?