Refactoring Ruby code
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”?