Tengo una pregunta de dos partes
Mejores prácticas
- Tengo un algoritmo que realiza alguna operación en una estructura de datos usando la interfaz pública
- Actualmente es un módulo con numerosos métodos estáticos, todos privados excepto el método de interfaz pública.
- Hay una variable de instancia que debe compartirse entre todos los métodos.
Estas son las opciones que puedo ver, ¿cuál es la mejor ?:
- Módulo con métodos estáticos ('módulo' en ruby)
- Clase con métodos estáticos
- Módulo Mixin para su inclusión en la estructura de datos
- Refactorice la parte del algoritmo que modifica esa estructura de datos (muy pequeña) y conviértala en una mezcla que llame a los métodos estáticos del módulo de algoritmo
Parte técnica
¿Hay alguna forma de hacer un método de módulo privado ?
module Thing
def self.pub; puts "Public method"; end
private
def self.priv; puts "Private method"; end
end
El private
no parece tener ningún efecto , todavía puedo llamar Thing.priv
sin problemas.
private
solo afecta a los métodos de instancia, no a los métodos de clase. usar private_class_method
en su lugar:module Thing; def self.pub; end; private_class_method :pub; end