Refactoring Ruby code

Gepubliceerd op: 10.XII.2005 03:07 CET
Categorieën: java, ruby

Als Java professional ben ik verknocht aan de refactoring mogelijkheden van Eclipse. Sterker nog de reden waarom ik van Vim en commandline CVS overgestapt ben, is refactoring. M’n grootste zorg bij de stap naar Ruby is het missen van dergelijk tools. Ik heb ze nog niet gemist maar dat is ook niet zo gek als je pas een half jaar over Ruby obsedeerd en nog geen honderden kilobytes code hebt die eigenlijk anders moeten.

Gelukkig ben ik niet de enige die zich daar zorgen over maakt en zijn er veel slimmere mensen die allang oplossingen hebben gevonden. Via een blog bericht van Curt Hibbs kwam ik op een uitgebreid verhaal van ene Murphee en daar vandaan op een waanzinnig Ruby-eske oplossing van Mike Williams. M’n hartje sprong!

Een stukje schaamteloos geknipt en geplakt:

Okay, here’s a method I want to rename:

class LinkPanel

  def render
    # ... 
  end

end

When I rename it, I also record the change using method_renamed:

class LinkPanel

  method_renamed :render => :to_html

  def to_html
    # ... 
  end

end

Now, I run my tests, and calls to the renamed method result in warnings:

/home/mikew/eyaw/sidebar.rb:229: #render renamed to #to_html

Natuurlijk moet je volledig dekkende tests hebben als je een dergelijk methode gebruikt. De Java methode heeft ook ernstige tekortkomingen denk aan JSP’s, TLD’s, Spring configuratie, Hibernate mappings etc. etc. Lees de blog berichten van Murphee en Mike.

Wat is eigenlijk de nederlandse term voor “refactoring”?