Back in May I posted about starting to use ReSharper as part of the whole bit of learning new tools, becoming a better developer, etc, etc. 3 full months later and I'm starting to worry that if I ever don't have ReSharper available, I'll probably die. Or become a garbage man. W/E.
So, talk about the good first. This thing is awesome. In my drive to make the little box on the top-right of the code window go green I find myself writing more thought-out code rather than just shooting from the hip. I'm being more defensive about my programming, checking assumed values, catching exceptions before they happen, and so on.
ReSharper also just...works with me. It fits with my code style. While I don't just write code without thinking, I do tend to be sort of a "stream of conscious" coder once I get into the meat of something. ReSharper allows me to just let it flow, and then refactoring becomes painless, almost fun, as I go. Because it's so painless to refactor, I don't fall into the trap of writing code that I know needs refactoring, and then leaving it as is because I'm too lazy or too tired to fix it right away.
I think the biggest sell for me on ReSharper was a few weeks ago. I went into an old codebase looking to find some efficiencies. We're talking about a lot of code here, and this task BR (before ReSharper) would have been very daunting, maybe too daunting with too much risk to tackle. But with ReSharper by my side, I dove in and probably factored out about 500 LOC with zero bugs, and made some gains in both performance and future maintainability.
Now a couple of downsides of ReSharper have surfaced. One, it's been tough to get buy-in from my team. My junior developer is afraid of it I think, and probably a little daunted by all that it offers. It's true that ReSharper takes some time to grok, and I still am learning new things about it as I go, but if you dedicate some time to learning the basics, it's really not that scary. Also...my boss is always afraid that ReSharper is going to introduce a bug. I can't count the number of times a bug has surfaced and he's asked me "could it have been ReSharper?" To which my answer is always an emphatic "no". And it never has caused a bug...
...except this one time. Beware of the code cleanup feature (ctrl+shift+alt+f in the ReSharper bindings) when it comes to re-ordering fields. I found out the hard way that this is potentially bad when someone else (ahem...brian) creates a bunch of static fields that are order-dependent...meaning that certain ones later in the list require certain ones earlier in the list to have been initialized. Without thinking, I pretty much ctrl+shift+alt+f every file I open right away and then go from there. Of course everything in this case still compiled, but when I released the app to QA, it promptly exploded. I think one tester's monitor shattered sending shards of glass into his jugular. It was the worst bug ever.
However, that one pitfall aside (and that was a combination of poorly put together code + my own stupidity for just blindly doing something without thinking) ReSharper has been, to understate, a lifesaver.
Having just read Real Programmers Don't Use Refactoring Tools I have to say I agree with the author. A good refactoring tool is every bit as necessary to developer productivity as is the IDE and a good set of APIs to work with. We shouldn't have to sweat the mechanics of this stuff...and a tool like ReSharper will alow you to just code.
Tags: ReSharper