Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

474
Vistas
Ruby: ¿Cómo hacer público un solo método en una clase?

Cada discusión de métodos Ruby privados vs. públicos en una clase muestra cómo declarar todos los siguientes métodos como privados (o públicos o protegidos):

 class airplane def preflight end def engine_start return unless preflight_complete? end private def preflight_complete? end end

Eso funciona muy bien la mayor parte del tiempo, donde coloca todos sus métodos públicos en la parte superior y todos sus métodos privados en la parte inferior.

Tengo una clase de buen tamaño con tres métodos públicos y unas pocas docenas de métodos privados. Los privados están secuenciados de manera lógica para la comodidad del desarrollador.

Ahora, encuentro que hay 2 o 3 métodos anteriormente privados que necesito hacer públicos. No quiero llevarlos a la cima, lejos de sus vecinos contextuales. También me resulta torpe alternar entre public y private cada vez. Esto es particularmente molesto si el tamaño de la pantalla hace que la bandera public quede fuera de la vista y no es obvio que un segundo o tercer método nuevo sea público involuntariamente solo porque los inserté después del método público más solitario.

Entonces, ¿existe una manera elegante de evitar alternar público/privado para hacer público solo un método?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Simplemente ponga public (o privado, protegido) al comienzo de la definición del método:

 class airplane def preflight end def engine_start return unless preflight_complete? end private def preflight_complete? end public def tanks_full? end def pilot_authorized? end end

En este caso, pilot_authorized? sigue siendo privado, pero ¿alguien puede comprobar tanks_full?

over 4 years ago · Santiago Trujillo Denunciar

0

Como alternativa, puede publicar este método a través de un contenedor público.

 class airplane def preflight end def engine_start return unless preflight_complete? end def tanks_full? _tanks_full? end private def preflight_complete? end def _tanks_full? end def pilot_authorized? end end

De esta manera, su código todavía está claramente dividido en dos secciones, sin desertores sorpresa, y el método aún está cerca de sus vecinos contextuales.

over 4 years ago · Santiago Trujillo Denunciar

0

Esto parece lo más legible para mí:

 class Example def public_method1 end private def used_by_public_method1 end private def also_used_by_public_method1 end def public_method2 end private def used_by_public_method2 end def public_method3 end end
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda