voy a dar mi opinión , y tal vez obtendrá una patada por ella, pero no se molestan con protegido o privado en Ruby. La realidad es que Ruby te trata como a un adulto, si quieres ejecutar un método privado desde fuera de la clase, puedes (allí areways). Puede ejecutar métodos protegidos fuera de la clase. Incluso puedes reasignar constantes ... puedes hacer lo que quieras, básicamente.
Y es por eso que me gusta, es su responsabilidad. Mi sensación es que, a marcar algo como protegida o privada que está haciendo dos cosas:
- Indicando que usted no cree un consumidor que va a necesitar.
- Segundo adivinando lo que alguien más necesita.
y, además, que está haciendo que sea más difícil de probar, ya que puede ser un verdadero dolor de los métodos de pruebas privadas (ver What's the best way to unit test protected & private methods in Ruby? de formas a su alrededor)
Para los dos últimos motivos, I don' Me molesto con ellos. Si realmente deseaba algún tipo de barrera entre sus clases/métodos y los consumidores (ya sean códigos o desarrolladores), entonces hay otras formas más efectivas (proxies, ofuscación, cifrado, métodos protegidos con contraseña, etc.). De lo contrario, ¿por qué no darles acceso a las mismas herramientas que usaste?
Esto me suena un poco ... tu ** 3er punto **. Una subclase puede acceder internamente a los métodos 'privados' de su superclase. Un método 'protected' le da la capacidad de pasar un objeto de la misma clase y ejecutar métodos protegidos en ese objeto. – slindsey3000
http://weblog.jamisbuck.org/2007/2/23/method-visibility-in-ruby "En realidad, se pueden llamar métodos protegidos siempre que el receptor sea de la misma clase que 'self'" – clyfe