Eu tenho uma pergunta de duas partes
Melhor prática
- Eu tenho um algoritmo que executa algumas operações em uma estrutura de dados usando a interface pública
- Atualmente, é um módulo com vários métodos estáticos, todos privados, exceto o método de interface pública.
- Existe uma variável de instância que precisa ser compartilhada entre todos os métodos.
Estas são as opções que consigo ver, qual é a melhor ?:
- Módulo com métodos estáticos ('módulo' em ruby)
- Classe com métodos estáticos
- Módulo Mixin para inclusão na estrutura de dados
- Refatore a parte do algoritmo que modifica essa estrutura de dados (muito pequena) e faça disso uma combinação que chama os métodos estáticos do módulo do algoritmo
Parte técnica
Existe alguma maneira de fazer um método de módulo privado ?
module Thing
def self.pub; puts "Public method"; end
private
def self.priv; puts "Private method"; end
end
O private
in lá parece não ter nenhum efeito , ainda posso ligar Thing.priv
sem problemas.
private
afeta apenas métodos de instância, não métodos de classe. use no private_class_method
lugar:module Thing; def self.pub; end; private_class_method :pub; end