Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

477
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda