Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

466
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!