По каким причинам я должен сделать частные уроки? - PullRequest
0 голосов
/ 23 апреля 2020

Когда я проверяю свой код и реализую то, что я узнал, меня беспокоит одна вещь. Почему это важно, если эти методы или методы вообще являются частными?

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

Некоторые методы относятся к абстрагированию функциональности. Я не вижу необходимости.

Ответы [ 2 ]

1 голос
/ 23 апреля 2020

При разработке API (в традиционном смысле: описание того, как использовать вашу программу, в данном случае Классы и Методы), private отмечает, что это метод, о котором нет необходимости знать (и / или даже не выгодно звонить «извне»), когда вы хотите взаимодействовать с этим классом или его экземпляром.

Относительно «имеет ли значение?»: в Ruby с технической точки зрения: не совсем , При желании вы можете вызывать закрытые методы для других объектов (с «хитростями», но не с обычным вызовом: @myobject.themethod()).

С точки зрения пользователя: много. Вы сообщаете, как вы хотите, чтобы ваши вещи использовались.

С точки зрения разработчика: также журнал, если вы считаете пользователей (см. Пункт ранее). Если вы активно думаете о своем API (модулях, классах, методах) и сознательно используете private, у вас могут получиться лучше разработанные «интерфейсы» (API).

Обратите внимание, что в других языках программирования (например, * 1025) *) public, protected и private также могут строго указывать, как, например, подклассы могут получать доступ к определенным внутренним элементам ваших классов и интерфейсов (здесь слово «Интерфейс» обозначает функцию языка). Поэтому, если вы когда-нибудь используете другой язык, обязательно посмотрите, как там подразумевается private.

Я не нашел официальной документации по частным вопросам, но, например, этот рубин: https://www.rubyguides.com/2018/10/method-visibility/.

0 голосов
/ 23 апреля 2020

Согласно руководству по Rails

Только публичные c методы могут быть вызваны как действия. Рекомендуется уменьшить видимость методов (с помощью private или protected), которые не предназначены для действий, таких как вспомогательные методы или фильтры.

Общая практика создания всех вспомогательные методы, поддерживающие действия как частные методы. Это помогает отграничить действия от вспомогательных методов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...