Один стиль для групповых методов вместе , так что вы используете только 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