So my company sprung for ReSharper licenses for all of us in the Business Solutions Group side of things. I just installed the thing, and will be posting my impressions about it as I go. Now to be fair, I’m using the ReSharper 4 EAP builds, so I might find some things that aren’t exactly "done" yet along the way, but I really need it to be aware of the .NET 3.5 stuff we’re doing, and from all reports it seems to be getting better at this stuff with each build.
As with any new tool, the first things I’m going to notice are things that don’t work in the way that I’m used to. I’ll either find a way to make them behave the way they "should", learn to work around them, or change my habits. I would say, in general, that if R# improves on some built-in Visual Studio functionality, it should do so in as "similar" a way as possible so that other developers at my machine won’t feel lost, and vice versa.
Right off the bat, I can see there are a couple things I’m going to disagree with. The indentation styles offered for object initializers is going to bother me. R# wants to put the opening brace under either the "new" keyword (BSD style) or under the type name (GNU, K&R, Whitesmith style). How about even with the beginning of the line, or what I’d like to call Visual Studio Style? Whether you agree with it or not, the fact is that a lot of developers might not have (or want) R#, and you might be on a team with them. There should be a way to make the formatting match what VS is going to give THEM out of the box just so we can avoid endless stupid merge conflicts over formatting.
I’ve also had a couple disagreements already with R#’s implementation of Intellisense. In VS, when I start typing ".text", for instance if I’m trying to set the text property of a TextBox control, Intellisense matches the ".Text" property, even though I didn’t capitalize the T. So far, R# isn’t copying this behavior, and I sincerely hope they intend to. A lot of times I use Intellisense as my Shift key I never have to touch. It’s just the way I type. Maybe it’s because I got used to Intellisense back in the VB6 days… who knows? Anyway, it’s a habit of mine, and it won’t be easy to break. I looked for an option to tell R#’s Intellisense mapping to be case insensitive, but couldn’t find one. Actually, I found an un-checked
As far as the code suggestions go, this is one of those things I’ve been looking forward to. Constant background static code analysis. I’m an FxCop fan, and I like to try to get everyone to run static code analysis whenever possible because it stops you from developing bad habits early on, and reminds you the ones you already have. ReSharper’s implementation is even better because it marks up your code with squiggly underlines in the background while you work.
There are a lot of awesome refactorings as well, far beyond what you get with Visual Studio out of the box. The biggest problem for me there is going to be getting in the habit of looking for them and using them. You get so used to doing everything manually that the idea of it being done for you is very foreign. I’ll get used to them and eventually take them for granted. For now, I have to get over the initial hurdles and change some habits.