Thursday, July 9, 2009

Refactoring, refactoring, refactoring

I'm in the process improving the refactoring in MonoDevelop.

I hope that refactoring in MonoDevelop will be in a good shape 'really soon' (maybe in 1-2 months). I've looked at other tools eclipse, netbeans, intellij and michael hutchinson pointed me to some VS.NET plugins that add refactoring to VS.NET.

I've created a new refactoring plug in and have thrown any refactoring stuff in there, we've a basic refactoring infrastructure. The refactoring system is based on single changes. That means that refactorings generate a list of replacement operations which the user can view in a preview dialog (mostly the same as eclipse). However this preview dialog doesn't make sense for very small inline refactorings - they can be done without any dialog.

Now I'm improving the infrastructure by writing some small refactorings. I first thought writing extract method is enough. But that isn't the case, other refactorings need different stuff. Therefore I'll implement some more. Wanna help ?

I try to get my wife on board to help out with refactorings. She helped me to improve the refactoring infrastructure quite a bit (but the infrastructure needs some evolvement before I can write it down). And she tries to implement some refactorings. It's really helpful to have someone which I can see working with mono develop. Some of the more advanced mono develop editing features alienate users ... that's something I need to think over.
The features are really cool but are unpredictable for developers who don't know them.

I was a bit lazy with writing new features in the last few weeks, but I think that adding some refactorins is worth introducing a ton of new bugs. The other IDEs offer a wide range of refactorings that I found really useful - stay tuned for some cool refactorings the next few weeks.

1 comment:

Felix said...

What happened? Right at the moment I'd love a refactoring that could convert a property into a pair of extension methods... Lots of tedious work but not quite enough to be worth teh effort of constructing and debugging a complex regex replace.