I’ve been using ReSharper for 5 years now, and I don’t mean that I installed it and started working as normal, I actually took some time to learn a lot of the features built into it. What drew my to it was the endless list of keyboard shortcuts which allowed me to zip around my solutions at light speed and refactor code quickly.
A ReSharper license is pricey and given how much VS has matured in recent years I thought I’d see how affected I would be without my favorite extension installed and to see if I could save a few hundred dollars a year.
One month without my favorite tool
I wanted to see how affected my productivity would be without the use of ReSharper and I gave myself a month while at the same time, jotting down some notes on a piece of paper every time I had a “Oh no” moment. A moment where I realised that I wished I had ReSharper installed.
Keep in mind that ReSharper is a huge beast with a long list of features, so I’m just sticking to the 90% use case for myself.
Here are the problems I found with Visual Studio functionality:
- “Find all references” doesn’t distinguish between
setwhen looking for property usage. I also found the usage listing to be buggy when moving between the entries in different files with up and down arrows on the keyboard. The window would lose focus even though I wasn't finished going through the list.
- Bookmarks are painful to use — In ReShraper, you can quickly cycle through bookmarks by pressing
CTRL+ numbers 1 - 10.
- There’s no go to interface or any way to go up the inheritance hierarchy. Pressing
HOMEin ReSharper would immediately take you to an interface or super class. If more than one exists, a small dialog lists them so you can quickly pick one and be on your way. This one really hurt.
- There’s no way to view related files — If for example, you’re looking at a
cshtmlfile and you press
F7you'd be presented with the
- There’s no
INSERTequivalent to quickly create new files in solution explorer or to generate code such as constructors and properties.
- Static analysis warning me of potential bugs and showing me dead code. One I noticed was gone immediately was being warned that I’m using nullable
- Intellisense doesn’t work for items where the namespace hasn’t been imported. I found this to be especially annoying when trying to use the LINQ operators. With ReSharper, whether or not the
System.Linqnamespace is included, you'll get the intellisense and the
usingstatement to go with it.
- You cannot add parameters to an existing method. If for example, I have a method and I’d like to add a new
stringparameter to it from a different part of the code base where it's being called, ReSharper will simply add it whereas VS will create a new overload of that method instead.
F12shows you metadata about a type instead of decompiled sources.
Some Features of Visual Studio which surprised me
Here’s a few things I was surprised VS had out-of-the-box. Surprised because I can’t remember those features from earlier versions of VS. These features kept me going throughout this time.
- Introducing a local variable from a highlighted code simply by pressing
- Introducing a readonly field from a constructor argument.
- Prediction of constructor argument variable names
- You can go to the next compile time error anywhere in your solution by pressing
- Go to implementation with
Will I go back to ReSharper?
Before I answer that, I’ll also say that I noticed a very noticeable performance increase when ReSharper was not installed and the overall performance of VS improved and I experienced very few “lock” scenarios where VS freezes. It was nice having VS go back to it’s snappy state.
In spite of that and the fact that I was really starting to get used to developing without it, the small seconds lost just navigating the solution or going back to my most recent file edits, and the hugh one for me is the built in static analysis which looks for potential bugs. Static analysis has saved my butt so many times in the past, I’m going to go back to using it. However, I will probably hunt around the settings a bit more to see what I can turn off.
Also, I know those small missing features could probably be filled in by some open source extensions, but I don’t have the time to spend hunting around for for them. I’d rather pay yearly fee and know that the product will be kept up to date and maintained.