Один стиль для групповых методов вместе , так что вы используете только private
и protected
один раз в классе максимум. Другой стиль - указать видимость сразу после определения метода:
class Example
def my_private_method
end
private :my_private_method
def my_public_method
end
end
Начиная с Ruby 2.1.0, def
имя метода возвращается в виде символа, поэтому возможен более упрощенный стиль:
class Example
private def my_private_method
end
def my_public_method
end
protected def my_protected_method
end
private_class_method def self.my_private_class_method
end
end
(Обратите внимание, что мы используем private_class_method
методы класса - в противном случае мы получили бы, NameError: undefined method
поскольку private
ожидает метод экземпляра. Даже при использовании его в качестве макроса, как в исходном примере, он влияет только на видимость методов экземпляра.)
Мне больше всего нравится этот стиль встроенной видимости, поскольку он позволяет вам организовывать методы по своему усмотрению. Это снижает риск добавления нового метода в неправильное место и непреднамеренного превращения его в частный.
Что касается синтаксиса метода класса, вы можете справиться с этим следующим образом:
class Example
private def my_private_method
end
class << self
private def my_private_class_method
end
end
end
private def my_method...end