Um estilo é a métodos de grupo juntos para que você só pode usar private
e protected
uma vez por classe, no máximo. Outro estilo é especificar a visibilidade logo após a definição do método:
class Example
def my_private_method
end
private :my_private_method
def my_public_method
end
end
A partir do Ruby 2.1.0 def
retorna o nome do método como um símbolo, portanto, um estilo mais simplificado é possível:
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
(Observe que usamos private_class_method
para métodos de classe - caso contrário, obteríamos, NameError: undefined method
pois private
espera um método de instância. Mesmo ao usá-lo como uma macro, como no exemplo original, só afeta a visibilidade dos métodos de instância.)
Eu gosto mais desse estilo de visibilidade embutido, pois permite que você organize os métodos como desejar. Isso diminui o risco de adicionar um novo método no local errado e, inadvertidamente, torná-lo privado.
Quanto à sintaxe do método de classe, você pode lidar com isso desta forma:
class Example
private def my_private_method
end
class << self
private def my_private_class_method
end
end
end
private def my_method...end