Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

is it OK to use begin/end in Ruby the way I would use #region in C#?

Tags:

ruby

regions

I've recently moved from C# to Ruby, and I find myself missing the ability to make collapsible, labelled regions of code. It just occurred to me that it ought to be OK to do this sort of thing:

class Example
  begin # a group of methods

    def method1
      ..
    end

    def method2
      ..
    end

  end

  def method3
    ..
  end
end

...but is it actually OK to do that? Do method1 and method2 end up being the same kind of thing as method3? Or is there some Ruby idiom for doing this that I haven't seen yet?

like image 953
Simon Avatar asked Jul 08 '10 14:07

Simon


3 Answers

As others have said this doesn't change the method definition.

However, if you want to label groups of methods, why not use Ruby semantics to label them? You could use modules to split your code into chunks that belong together. This is good practice for large classes, even if you don't reuse the modules. When the code grows, it will be easy to split the modules into separate files for better organisation.

class Example
  module ExampleGroup
    def method1
      # ..
    end

    def method2
      # ..
    end
  end
  include ExampleGroup

  def method3
    # ..
  end
end
like image 77
molf Avatar answered Sep 30 '22 13:09

molf


Adding arbitrary Ruby code in order to please your editor doesn't seem reasonable to me at all. I think you should try to get a decent text editor, one that would be able to configure to use some keyword you put in your comments to enable code folding there, for example:

# region start AAA

some(:code, :here)

# region end AAA

And if you allow me to be sarcastic: you should know that Ruby is lot more expressive, elegant and pretty than C#, and chances are that there isn't any Ruby code ought to be hidden in the first place! ;)

like image 24
Mladen Jablanović Avatar answered Sep 30 '22 12:09

Mladen Jablanović


I know this might be a bit old but I ran into this issue and found a killer solution. If you're using "Rubymine" you can do #regions.

This is where they talk about navigating regions https://www.jetbrains.com/ruby/help/navigating-to-custom-region.html

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

So with the above in your code you will see the below:

Rubymine code editor - With a sample method using regions un-folded Rubymine code editor - With a sample method using regions **un-folded**.

Rubymine code editor - With a sample method using regions folded Rubymine code editor - With a sample method using **regions** folded.

like image 26
JamesDeHart Avatar answered Sep 30 '22 12:09

JamesDeHart