Ruby on rails 我为什么要将课程设置为私人课程?

Ruby on rails 我为什么要将课程设置为私人课程?,ruby-on-rails,Ruby On Rails,当我回顾我的代码,实现我学到的东西时,有一件事困扰着我。为什么这些方法或者通常的方法是私有的很重要 class ApplicationController < ActionController::Base before_action :require_login private def current_user @current_user ||= User.find(session[:user_id]) if session[:user_id] end

当我回顾我的代码,实现我学到的东西时,有一件事困扰着我。为什么这些方法或者通常的方法是私有的很重要

class ApplicationController < ActionController::Base
    before_action :require_login

  private

  def current_user
    @current_user ||= User.find(session[:user_id]) if session[:user_id]
  end

  def require_login
    if session.include? :user_id
      user = User.find(session[:user_id])
    else
      redirect_to root_path, notice: "You must be signed in to do that!"
    end
  end

  helper_method :current_user

end
class ApplicationController
有些方法指的是抽象功能。我认为没有必要。

根据Rails指南

只有公共方法可以作为操作调用。最佳做法是降低方法(使用
私有
受保护
)的可见性,这些方法不打算作为操作,如辅助方法或过滤器

使所有支持操作的助手方法都作为私有方法的一般做法。这有助于将操作与助手方法区分开来。

在开发API时(在传统意义上:描述如何使用程序,在这种情况下是类和方法),
private
标记它是一种不需要知道的方法(和/或甚至不利于从“外部”调用)当您想要与该类或其实例交互时

关于“它重要吗?”:从技术角度来看,在Ruby中:不太重要。如果需要,可以对其他对象调用私有方法(使用“技巧”,但不使用通常的调用:
@myobject.themethod()

从用户的角度来看:很多。你在交流你希望你的东西如何被使用

从开发者的角度看:P>也是一个日志,如果你考虑用户(见前面的点)。如果您积极思考您的API(模块、类、方法)并有意识地使用
private
,您可能会得到设计更好的“接口”(API)

请注意,在其他编程语言(例如Java)
public
protected
private
中,也可能强烈声明子类如何访问类和接口的某些内部(此处“接口”一词表示语言功能)。因此,如果你曾经使用过另一种语言,一定要看看那里的
private
是什么意思

我没有找到关于私人的官方文件,但例如,此rubyguide: