2010-07-08 9 views
5

Recientemente me mudé de C# a Ruby, y me falta la capacidad de hacer regiones de código plegables y etiquetadas. Se me acaba de ocurrir que debería estar bien para hacer este tipo de cosas:¿Está bien usar comenzar/terminar en Ruby de la misma manera que usaría #region en C#?

class Example 
    begin # a group of methods 

    def method1 
     .. 
    end 

    def method2 
     .. 
    end 

    end 

    def method3 
    .. 
    end 
end 

... pero es que en realidad estaba bien para hacer eso? ¿El método1 y el método2 terminan siendo el mismo tipo de cosa que el método3? ¿O hay alguna expresión de Ruby para hacer esto que no he visto todavía?

Respuesta

6

Como han dicho otros, esto no cambia la definición del método.

Sin embargo, si desea etiquetar grupos de métodos, ¿por qué no usar la semántica de Ruby para etiquetarlos? Puede usar módulos para dividir su código en fragmentos que pertenecen juntos. Esta es una buena práctica para clases grandes, incluso si no reutiliza los módulos. Cuando el código crezca, será fácil dividir los módulos en archivos separados para una mejor organización.

class Example 
    module ExampleGroup 
    def method1 
     # .. 
    end 

    def method2 
     # .. 
    end 
    end 
    include ExampleGroup 

    def method3 
    # .. 
    end 
end 
1

Sí, está bien hacer eso (es decir, no cambia la semántica de su código).

Sin embargo, este no es un patrón común y podría ser confuso para los lectores de su código que no entendieran cuál es el propósito del bloque begin ... end.

2

Creo que debería estar bien. No lo he visto mucho sin embargo. Otra forma en que podría lograr lo mismo, utilizando menos sangrado, es cerrar y volver a abrir la clase, así:

class Example 
    def method1 
    .. 
    end 

    def method2 
    .. 
    end 
end 

# optionally put some other code here 

class Example 
    def method3 
    .. 
    end 
end 

Creo que esto se utiliza a menudo para que usted puede poner otro código en el medio, tales como cuando hay una constante definida en el primer bloque class Example, que se usa para definir una constante en el código del medio, que se usa para definir una constante en el segundo bloque class Example. De esa manera, nunca tendrá que referirse a una constante antes de que esté definida.

6

Agregando código de Ruby arbitrario para complacer a su editor no me parece del todo razonable. Creo que se debe tratar de conseguir un editor de texto decente, que sería capaz de configurar para utilizar algunas palabras clave que usted pone en sus comentarios que permitan plegado de código existe, por ejemplo:

# region start AAA 

some(:code, :here) 

# region end AAA 

Y si me permito Sé sarcástico: debes saber que Ruby es mucho más expresiva, elegante y bonita que C#, ¡y lo más probable es que no haya ningún código de Ruby oculto en primer lugar! ;)

+0

Comentarios formales como este son código también, en mi humilde opinión. Entonces, según su lógica, tampoco son razonables;) – wdebeaum

+0

Formalmente, tiene razón. ;) –

+0

Rubymine le permitirá usar #Regions http://stackoverflow.com/questions/3204840/is-it-ok-to-use-begin-end-in-ruby-the-way-i-would- use-region-in-c – JamesDeHart

2

Sé que esto podría ser un poco viejo, pero me encontré con este problema y encontré una solución arrolladora. Si usas "Rubymine" puedes hacer #regiones.

Esto es donde hablan de las regiones que navegan https://www.jetbrains.com/ruby/help/navigating-to-custom-region.html

#region Description 
Your code goes here... 
#endregion 

Así que con la anterior en el código, verá el siguiente:

editor de código RubyMine - Con un método de muestra usando regiones ONU -preparado Rubymine code editor - With a sample method using regions **un-folded**.

Editor de código Rubymine - Con un método de muestra usando regiones doblado Rubymine code editor - With a sample method using **regions** folded.

Cuestiones relacionadas